遇到问题1:
const page = process.env.page;中process哪里来的?
答案:是webpack的生成环境,也就是node环境中全局变量。
遇到问题2:
path.resolve(__dirname, `./../src/containers/${page}/index.js`)
path: path.resolve(__dirname, '../dist/assets/')
中__dirname到底是什么?
答案:directory name 当前文件的目录。
-- directory
--index.js(使用__dirname)
遇到问题3:
[page]: path.resolve(__dirname, `../src/containers/${page}/index.js`)
这句中的[page]的括号能否去掉?
答案:不能,这个是和output中的filename中的[name]结合使用的。
filename: isProd ? `[name].[chunkhash].js` : '[name].js',
遇到问题4:
{
test: /\.html$/,
loader: 'html-loader',
options: {
attrs: [':src', ':data-src']
}
}
这个loader中attrs: [':src', ':data-src']部分是什么作用?
答案: 将html资源文件扩充到data-src,能够让url-loader等loader能够正确处理data-src,并且能够是output中的publicPath也能够对data-src起作用。
遇到问题5:
webapck中output里面的 filename和chunkFilename有什么区别?
答案:chunkFilename 是无入口的chunk在输出时的文件名称,那么无入口的意思就是不是在entry中指明的文件,大部分在当我们入口文件所加入的异步/引用文件较多,或者本身文件太大,webpack打包时会进行代码分割,生成多个chunk,那么那些无入口的,webpack主动生成的chunk名字就是用chunkFilename。
遇到问题6:
webapck中output里面的 chunkhash和hash以及contenthash的区别?
答案:
1)简单来说就是hash和整个项目文件有关,比如output1只和chunk1.js有关,output2只和chunk2.js有关,那么使用hash打包文件时,chunk1.js内容改变,所有output1,output2都名称改变;
2) chunkhash和每个chunk文件的本身内容有关,那么上面那个例子,使用chunkhash作为打包filename,chunk1内容改变时,只有output1名称改变,output2名称不变
3)那么contenthash 计算与文件内容本身相关,主要用在css抽取css文件时。
详情请看:webpack中的hash、chunkhash、contenthash分别是什么
扩展知识点:
new Vue({
render: h => h(App)
}).$mount('#app')
- h函数就是createElement函数,返回VNode虚拟节点;
- $mount(#app)是挂载函数,挂载到id=app的DOM节点上;
<%- include('../../components/layout/landpage-head.html') %>
- 这个预发是ejs,多数用来html页面的拼接
<link rel="dns-prefetch" href="//yun.tuia.cn">
- 中dns-prefetch是可帮助开发人员处理DNS解析延迟问题
.editorconfig配置文件
- 配置文件需要和vscode中的EditorConfig插件配合使用
- 改配置文件中主要内容有
# 根文件 root = true # every file [*] indent_style = space indent_size = 2 end_of_line = lf charset = utf-8 trim_trailing_whitespace = true