vue-cli常用设置总结


Posted in Javascript onFebruary 24, 2018

基于vue-cli做了好几个项目了,想把一些自己的常用设置写出来,磨了好久,一看vue-cli3.0都快出来了,不能再磨了。。

路径相关

css内引用的资源

build -> utils.js
 // generate loader string to be used with extract text plugin
 function generateLoaders (loader, loaderOptions) {
  //less
  // Extract CSS when that option is specified
  // (which is the case during production build)
  if (options.extract) {
   return ExtractTextPlugin.extract({
    use: loaders,
    publicPath: '../../', //注意: 此处根据路径, 自动更改
    fallback: 'vue-style-loader'
   })
  } else {
   return ['vue-style-loader'].concat(loaders)
  }
 }

本地访问

config -> index.js
module.exports = {
 build: {
  //less
  //assetsPublicPath: '/',
  assetsPublicPath: './',
  //less
 },
 //less
}

调试相关

内网访问

config -> index.js

module.exports = {
 //less
 dev: {
  //less
  port: process.env.PORT || 8080,//可改端口
  host:'192.168.0.105',//不是8080端口可能需要指定host为本机IP
 }
}

跨域代理

config -> index.js
module.exports = {
 //less
 dev: {
  //less
  proxyTable: {
   '/AppHome': {
    target: 'http://192.168.0.211:2334',//接口域名
    changeOrigin: true,//是否跨域
    pathRewrite: {
     '^/AppHome': '/AppHome'//需要rewrite重写
    }
   }
  },
 }
}
config -> dev.env.js
module.exports = merge(prodEnv, {
 NODE_ENV: '"development"',
 API_HOST: '"AppHome/"' 
})
config -> prod.env.js
module.exports = {
 NODE_ENV: '"production"',
 API_HOST: '"http://xxx.xxx.com/AppHome/"' //生产环境改为绝对地址,免得路径错了
}
//调用
this.$http
  .post(process.env.API_HOST + "GetApproveTypeList", { ID: 0 })
  .then(data => {
  let $data = data.data;
  if ($data.IsSuccess) {
    this.list.push(...$data.Model);
  }
});

路由加载切换

异步加载可以加快首屏加载速度,但是在开发阶段会导致热加载变慢,所以根据NODE_ENV来判断,开发环境不使用异步

let _import
if (process.env.NODE_ENV === 'development') {
 _import = file => require('@/components/' + file + '.vue').default
}
if (process.env.NODE_ENV === 'production') {
 _import = file => () => import('@/components/' + file + '.vue')
}

routes: [
  {
    path: '/',
    name: 'Index',
    component: _import('Approve/Index'),
    meta: {
      level: 1
    }
  },
]

打包

dll打包

1、在build目录新建webpack.dll.conf.js

var path = require("path");
var webpack = require("webpack");
module.exports = {
  // 你想要打包的模块的数组
  entry: {
    vendor: ['vue/dist/vue.esm.js', //有些资源需要直接指定js,否则会重复打包
         'vuex',
         'axios',
         'vue-router'
        ]
  },
  output: {
    path: path.join(__dirname, '../static/js'), // 打包后文件输出的位置
    filename: '[name].dll.js',
    library: '[name]_library'
    // vendor.dll.js中暴露出的全局变量名。
  },
  plugins: [
    new webpack.DllPlugin({
      path: path.join(__dirname, '..', '[name]-manifest.json'),
      name: '[name]_library',
      context: __dirname
    }),
    // 压缩打包的文件
    new webpack.optimize.UglifyJsPlugin({
      compress: {
        warnings: false
      }
    })
  ]
};

2、在build目录下的webpack.prod.conf.js添加新插件

const webpackConfig = merge(baseWebpackConfig, {
  //less
 plugins: [
  //less
  new webpack.DllReferencePlugin({
   context: __dirname,
   manifest: require('../vendor-manifest.json')
  })
 ]
})

3、在项目根目录下的index.html内添加dll.js引用

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>title</title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
 </head>
 <body>
  <div id="app"></div>
  <!-- built files will be auto injected -->
  <script src="./static/js/vendor.dll.js"></script>
 </body>
</html>

4、在项目根目录下的package.json内添加dll命令(顺便给build命令添加report),运行一次生成dll.js

"scripts": {
  "dev": "node build/dev-server.js",
  "start": "npm run dev",
  "build": "node build/build.js --report",
  "dll": "webpack --config build//webpack.dll.conf.js"
 }

关闭SourceMap

config -> index.js
module.exports = {
 //less
 build: {
  //less
  productionSourceMap: false,
 },
}

总结

以上所述是小编给大家介绍的vue-cli常用设置总结,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JavaScript 学习笔记(七)字符串的连接
Dec 31 Javascript
基于jquery的一个简单的脚本验证插件
Apr 05 Javascript
通过js为元素添加多项样式,浏览器全兼容写法
Aug 30 Javascript
jQuery验证元素是否为空的两种常用方法
Mar 17 Javascript
利用Mongoose让JSON数据直接插入或更新到MongoDB
May 03 Javascript
详解vue嵌套路由-params传递参数
May 23 Javascript
react中的ajax封装实例详解
Oct 17 Javascript
JavaScript实现带有子菜单和控件的slider轮播图效果
Nov 01 Javascript
angular中ui calendar的一些使用心得(推荐)
Nov 03 Javascript
关于vue中watch检测到不到对象属性的变化的解决方法
Feb 08 Javascript
使用node搭建自动发图文微博机器人的方法
Mar 22 Javascript
小程序分享模块超级详解(推荐)
Apr 10 Javascript
JS处理一些简单计算题
Feb 24 #Javascript
jQuery 改变P标签文本值方法
Feb 24 #jQuery
jQuery实现标签子元素的添加和赋值方法
Feb 24 #jQuery
通过js动态创建标签,并设置属性方法
Feb 24 #Javascript
JS随机数产生代码分享
Feb 24 #Javascript
JS中常用的消息框总结
Feb 24 #Javascript
JS改变页面颜色源码分享
Feb 24 #Javascript
You might like
php过滤所有的空白字符(空格、全角空格、换行等)
2015/10/27 PHP
我整理的PHP 7.0主要新特性
2016/01/07 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
php学习笔记之字符串常见操作总结
2019/07/16 PHP
javascript 表单的友好用户体现
2009/01/07 Javascript
前台js调用后台方法示例
2013/12/02 Javascript
理解Angular数据双向绑定
2016/01/10 Javascript
JS制作类似选项卡切换的年历
2016/12/03 Javascript
Java中int与integer的区别(基本数据类型与引用数据类型)
2017/02/19 Javascript
解决angular2 获取到的数据无法实时更新的问题
2018/08/31 Javascript
Vuex 使用 v-model 配合 state的方法
2018/11/13 Javascript
微信小程序实现拍照画布指定区域生成图片
2019/07/18 Javascript
vscode调试node.js的实现方法
2020/03/22 Javascript
[02:17]TI4西雅图DOTA2前线报道 啸天mik夫妻档解说
2014/07/08 DOTA
[00:48]DOTA2国际邀请赛公开赛报名开始 扫码开启逐梦之旅
2018/06/06 DOTA
Python生成pdf文件的方法
2014/08/04 Python
python optparse模块使用实例
2015/04/09 Python
Python中的filter()函数的用法
2015/04/27 Python
深入理解Python3 内置函数大全
2017/11/23 Python
Python实现批量执行同目录下的py文件方法
2019/01/11 Python
Python正则表达式匹配日期与时间的方法
2019/07/07 Python
Python如何使用函数做字典的值
2019/11/30 Python
Python实现图片识别加翻译功能
2019/12/26 Python
PyQt5高级界面控件之QTableWidget的具体使用方法
2020/02/23 Python
python Plotly绘图工具的简单使用
2020/03/03 Python
python3.6使用SMTP协议发送邮件
2020/05/20 Python
keras多显卡训练方式
2020/06/10 Python
python 实现百度网盘非会员上传超过500个文件的方法
2021/01/07 Python
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
2014/09/26 面试题
学前教育学生自荐信范文
2013/12/31 职场文书
个性发展自我评价
2014/02/11 职场文书
《一件运动衫》教学反思
2014/02/19 职场文书
工作目标责任书
2014/07/23 职场文书
四风问题专项整治工作情况报告
2014/10/28 职场文书
2016年共产党员个人承诺书
2016/03/24 职场文书
Redis keys命令的具体使用
2022/06/05 Redis