npm run dev
的环境是开发环境;而部署到线上时,npm run build
的环境是生产环境,代码会被打包,放到新生成的dist
文件夹下;base64
,当图片小于必定的大小时,图片就会被转为base64
,这个大小能够在webpack配置里设置,在webpack.base.conf.js
下://图片压缩 new ImageminPlugin({ disable: process.env.NODE_ENV !== 'production', // Disable during development pngquant: { quality: '95-100' } }),
可是有个注意点就是用base64
转过的图标会比原来的那个图的大小大30%~40%
(能够将你图片转成的base64
而后保存成文本对比图片的大小)css
vue
文件中的js
和css
都会被压缩而后单独打包成一个js
, 每次打开一个页面,就会相应的去加载那个js
文件;app.js
, vendor.js
, manifest.js
每当咱们点击一个页面就会去加载一个js
文件(第二次点击读的就是缓存),这个js
文件就是webpack打包的关于这个页面的压缩代码。vue
css
文件,在首次打开的时候就加载完毕在webpack.prod.conf.js
文件下补充代码:webpack
new webpack.optimize.UglifyJsPlugin({ compress: { warnings: false, /*不显示控制台打印信息*/ drop_debugger: true, drop_console: true, pure_funcs: ['console.log'] }, sourceMap: false })
在config/index.js
下的build
里:productionSourceMap: true
改成productionSourceMap:false
便可。web
在config/index.js
中:
将false
改成true
便可。npm
productionGzip: true
当再次npm run build
时会生成.gz
文件:缓存
在控制台的network
能够看到加载的js
文件app
优化效果明显,单个js
文件至少能缩小一半以上。函数
代码优化其实要试具体项目而定。学习
component: resolve => require(['path/component.name'], resolve)
main.js
中注册全局组件Vue.component('component-name', componentName)
这样组件可在全局直接引用,不用每次先import
又局部注册。
这样作的目的也是为了缩小js
文件的体积,当你的组件在三个地方用到而你分别引入了三次,打包的时候你的组件代码会被压缩到三个不一样的js
文件中,也就是被压缩了三次;若是注册为全局组件,则代码只会被压缩到app.js
中(只被压缩一次)优化
css
文件也是一样的道理能够将你的公共样式文件在main.js
中引入,至于公共函数的话,能够挂在到vue
下,全局可调用
Vue.prototype.functionName = functionName
图片的大小太大直接影响js
文件的大小,因此压缩图片是很必要的。若是UI
没有帮咱们压咱们就本身压。http://tinypng.com/
为了缩小项目的体积,几kb
都要争取能减小就减小的。尽可能将能抽取的代码抽取,能够看控制台的network
里各个js
文件的大小,而且能够打开看看里面的内容,寻找你的优化点~这是我项目的优化过程,大都只讲思路,没有涉及很具体,可能还有些缺陷和错误,欢迎批评指教,一块儿交流学习。