最初用的就是vue-cli,但每次都是向导式的配置,很不透明,希望能从尽量简单的系统开始研究。然后就发现了poi。

vue-cli创建好的项目不仅配置好了代码检查、babel、ts、css预处理等功能,还带一个目录结构,即main.js、App.vue等。

poi创建好的项目目录是空的,我可以稍微做两步。比如新建一个js文件,然后createElement,appendChild,再启动dev-server,我一下就明白了入口文件(entry)是什么意思(虽然以前也明白,但理解方式不同),那就是编译好的代码从这里执行,打包的时候,如果用到了某个模块,在引入的时候,那个模块的代码就会执行,但这个模块导出的东西可以在之后用,循环引用时模块可能不会被编译到最终的文件等等。

然后是Vue的使用,如果用Vue-cli,那么就不会注意到main.js里的new Vue,实际上这里新建了一个根实例,并且挂载到一个html元素上($mount)。它的render属性是一个函数,接受一个渲染函数h,并且返回h(App),App是引入的一个vue组件(被vue-loader从vue文件编译成了js)。为什么用render而不用template呢,因为vue通常用runtime版本的,不带编译模板的功能,需要build时编译好(编译vue文件),如果用template的话,main.js或index.js又不会被编译,所以就会出错。所以可以引入vue.esm,也可以自己写渲染函数,也可以引入一个vue组件,再在vue组件内引用别的文件。