Closed tent42 closed 5 years ago
另外.如何在dev环境下,读取到easywebpack打包在内存中的文件?我在asset images文件夹下放了新的图片,但是应该用什么路径来读呢?即使我设置了loders.urlimages,是能直接/xx.jpg获取到,但是如果build后,hash值之类的问题应该怎么办?顺序是什么?
npm run dev 或者 egg-bin dev 是本地开发模式,会进行 webpack 构建,同时只会启用 一个工作worker
npm start 或 egg-scripts start 是 正式发布模式, 不会进行 webpack构建(需要你提前进行 npm run build 进行webpack 构建), 同时会根据 cpu worker 个数启用 多个worker
另外.如何在dev环境下,读取到easywebpack打包在内存中的文件?我在asset images文件夹下放了新的图片,但是应该用什么路径来读呢?即使我设置了loders.urlimages,是能直接/xx.jpg获取到,但是如果build后,hash值之类的问题应该怎么办?顺序是什么?
使用时, 使用 文件原始路径和文件名, webpack 构建时,会自动帮你替换为构建后的真实路径
"antd": "^3.0.3" "react": "^16.0.0"
这种 ^ 会安装 3.x.x 和 16.x.x 的最新版本,依赖你可以修改
@tent42 骨架项目只是一个基础完整的骨架项目方案,具体一些问题和功能自己可以根据需要进行修改
@hubcarl 谢谢您的耐心解答,见笑了
经过一段时间的摸索,上面的内容基本上已经摸得算是清楚了,但是又有了新的疑惑,还望您能指正.
首先是,从我目前的能力上来理解,easywebpack在做的逻辑是不是这样的.
1....当时url访问时,如标签或者刷新,这个url会直接被egg router捕获,然后将url传给前端包含了layout_html的index.jsx->staticrouter->swtich->router->相应react页面,然后将这些代码全部在egg下进行render,返回出来html,是server render
2....当以如交互访问时,其实所有的页面都是通过react-router-dom捕获到链接,然后跳转,渲染dom,其实是一个client render?
例如在index中export default (EASY_ENV_IS_NODE ? serverRender : clientRender());
我在serverRender中进行组件传值,子组件class App接收不到,反而是在clientRender中进行props组件传值可以接收到.
或者我将export default (EASY_ENV_IS_NODE ? serverRender : clientRender());
改成export default serverRender ;
时,页面的state变化就不再mount了.
所以能不能这么说,首屏必然是ssr的,也就是egg收到了url请求,render出的首页,而其他首页都是在
例如,当我在serverRender
中打印一句console.log
,在clientRender
中打印另外一句console.log
,那么,我将看到的是,后台terminal中,egg控制台打印出,serverRender
而在浏览器端我看到的是clientRender
.
在其他的打印信息中,控制台和前端也是两套内容.
我应该如何界定,我接下来写的代码,到底是在不是要分清楚我是在什么环境下进行编译的?例如我用react-helmet,但是view source中从来没看到这块内容被服务端渲染成html,而在react-helmet的github说,服务端渲染的话需要另外配置.
所以,我在serverRender
中import的layout.jsx
,即html模板?
我想要对html模板进行修改的话,就必须要把Link改成a,然后从egg中获取到url,然后在render环节进行例如,title或者keywords的设置.
或者说,我又能用哪些方法,在其他组件中去影响html的title之类?
不知道我的理解是否正确.还请解惑,
再次感谢,但是上文您提到的情况我并不是很想用,因为如果我想用props传title的话,所有的跳转都需要用a吧?如果这样的话,页面就要全局刷新一次吧?那一个全屏闪烁...觉得就有违这些前端框架的意图了(不知道理解的是否错误,希望您能解惑)...虽然next的link也是a....但是咱们的项目提供的两个router我觉得才是很好的解决办法.
我这次想问一下,关于Module build failed (from ./node_modules/thread-loader/dist/cjs.js):
的报错问题
还有
at transpile (/xxx/xxx/project/node_project/xxx/xxx/node_modules/babel-loader/lib/index.js:65:13)
at /xxx/xxx/project/node_project/xxx/xxx/node_modules/babel-loader/lib/fs-cache.js:118:18
at ReadFileContext.callback (/xxx/xxx/project/node_project/xxx/xxx/node_modules/babel-loader/lib/fs-cache.js:31:21)
at FSReqWrap.readFileAfterOpen [as oncomplete] (fs.js:420:13)
因为我加入了redux saga,所以,改了一点babelrc之类...应该没什么问题.
这个错误出现在,当我想声明一个如下函数的时候,编译不报错,即使不去调用,渲染后会错误.
5 | export class EditorModel extends Component {
> 6 | abc = () => {
| ^
7 | console.log('abc');
8 | };
9 | render() {
再请教一下 :)
我在https://www.yuque.com/easy-team/easywebpack/cssmodule
里看到,关于easywebpack4里,通过约定的方法就自动是css module了.
/\.module\.(css|less|scss|stylus)/
是不是我将css的文件命名为例如,test.module.css或less就可以了?
我在下面看easywebpack3里面是要吧css写在app/web/page/css/module
里
那应该是哪一个才是对的?
两种都是支持的,4 里面建议用 将css的文件命名为例如,test.module.css或less就可以
非常感谢easy-team开源的这个框架,很美妙,甚至在某些方面要比nxxxxx,bxxxx,的项目让人一眼看上去顺畅很多.但是或许是因为了解的不太清楚,或者太弱鸡的原因,遇到了些问题. 谨启. 1.不管是我从该地址上下载的框架还是通过easywebpack init -> egg+react+server side render->single page+mutile page->yarn 的选项. 不管是用cnpm run start 还是 yarn start,都会在命令行端多次重复输出关于
Loaded middleware from ../node_modules/egg-session/app/middleware
以及app_worker#6:1651 started at 7001, remain 3 (1203ms)
3->2->1->0. 当我cancle掉start进程时,多次输出app_worker#8:1653 disconnect, suicide: false, state: disconnected, current workers: ["1","2","3","4","5","6","7","8"]
以及cfork:master:1644]worker:1648 exit (code: null, exitedAfterDisconnect: false, state: dead, isDead: true, isExpected: false, worker.disableRefork: true)
当然,当我使用npm run dev或者yarn dev的时候是就不会出现了. 我看框架内使用start时是用egg-script启动的,dev时用egg-bin.eggjs初始化也是这么做的,但是我看egg-script的readme里写的是用eggctl start?这就搞不懂了....学术不精不知道为什么是这样.. 2.前段时间我用axios遇到了点关于cookie的问题,转用egg-fetch就ok了,我记不清在mock的github还是在哪个github issues里提到,关于axios和mockjs是有点结合问题的,框架为了展示对于api的简单展示,专门配了这个环境确实是十分用心,但是如果将json的返回放在一个新建的controller里,直接给个ctx.body,yield或await->get或post,是不是会更贴切一点?[这是完全无恶意的鸡蛋里挑骨头给的无价值提议,希望不要生气:)] 3.在github以及脚手架中,都存在mock下的list.js 对{Egg + React 服务端渲染骨架}使用了`进行包裹而有eslint报错,用改成''[这也是鸡蛋里挑骨头.....] 4.如果使用start启动除了上面说的运行多次问题,还有就是包括 / /about /home 等都是500的错误的问题....我在发issues时候是mac环境,linux环境下也是如此.目前没有使用过windows系统,应该也不存在windows环境下某些文件出现鬼畜的情况 5.package.json下的部分内容版本并不是很新,是必须要是这个环境还是可以选择重新install或者add呢?例如
"antd": "^3.0.3"`"react": "^16.0.0"
再次非常感激贵团队对像我这种看到webpack就头疼绕道周围也没人讨论学习的人提供的如此美妙的框架,谢谢你们.期待回复.