合理使用webpack提高开发效率
虽然公司有提供现成的脚手架工具,但是作为开发人员懂得必要的相关知识还是很重要的。这样有利于提高我们的开发效率,优化我们的代码。
关于npm scripts
什么是npm scripts
npm 允许在package.json文件里面,使用scripts字段定义脚本命令。
在我们工作的时候使用的npm start, npm build. 就是 npm 脚本命令。合理的使用npm脚本可以让我们避免输入一大串的繁琐命令。
我对start命令和build命令的理解
"scripts": {
"start": "webpack-dev-server --env=dev --open --host 192.168.1.84",
// webpack-dev-server 打开开发环境
// --env=dev 定义env变量为dev,用来区分生产环境和开发环境
// --open 自动在浏览器当中打开项目
// --host 192.168.1.84 使用ip地址打开项目,主要作用是可以用来让手机或者别人的电脑能够访问到开发环境的项目
"build": "webpack --env=prod --progress --profile --colors"
// webpack 打包命令
// --env=prod 定义env变量为prod,用来区分生产环境和开发环境
// --progress 显示打包进度
// profile 性能监控,输出性能数据
// --colors 让打包时的代码带点颜色
},
定制自己的npm脚本
比如我希望我的打包过程简单一点,我只想简单的打包,我不关心打包进度,也不关注性能,什么五颜六色的打包信息我更不care,这个时候我的npm scrpis可以写成这样。
"scripts": {
"liujp": "webpack --env=prod"
}
这个时候我可以执行我自己的npm scripts来打包我的项目了。
cmd当中输入: npm run liujp
文档
利用webpack配置代理,解决跨域问题
在前后端分离的项目当中,常常碰到跨域问题。当只有开发环境存在跨域的时候我们完全可以不用麻烦到后端大佬。我们完全可以自己配置代理来解决这个问题。
devServer.proxy 的使用
这里我简单说下,具体的看文档进行详细了解。
devServer: {
proxy: {
'/': {
target: "http://192.168.1.84/test",
}
},
}
如上代码,进行这样简单的配置,当我在项目当中调用数据的时候
// 接口管理文件
const API = {
userInfo: "/userInfo"
}
module.exports = API;
// 项目文件
const API = require("api");
$http.get(api.userInfo).then(({data})=>{
console.log("获取用户数据===>",data)
})
如上,这样我们就可以获取到 http://192.168.1.84/test/userInfo 这个接口的数据了。
文档
配置常用的功能模块,提高开发效率
比如常用的网络请求模块 $http.js, 接口管理文件 api.js, 自己封装的常用工具方法类。
利用webpack给我们提供的插件ProvidePlugin可以减少我们频繁的引入这些模块,从而提高我们的开发效率,它可以使我们在用到配置模块的时候帮我们节省 import 的过程。
例如:
// webpack配置
plugins: [
new webpack.ProvidePlugin({
"api": path.resolve(__dirname,"../src/static/lib/api.js"),
"$http": path.resolve(__dirname,"../src/static/lib/http.js"),
"utils": path.resolve(__dirname,"../src/static/lib/utils.js")
})
],
// 项目当中使用,我们可以直接使用相关模块,而不需要引入, 这个操作webpack会默认帮我们做了
$http.get(api.test).then(({data})=>{
console.log(data)
})
文档
使用resolve.alias简化我们的模块引入
在项目过程当中,文件的嵌套可能会十分复杂,导致引入的路径很长,这个时候,就可以使用这个api,来简化我们的代码。
webpack配置示例
...
resolve: {
extensions: ['.ts', '.js', '.json', '.jsx'], // 允许省略后缀
alias: {
"@": path.resolve(__dirname,"../src/components"), // 通用组件地址
}
}
项目当中使用
// 使用前的引入
import TestComponents from "../../../components/ExportComponents/TestComponents";
// 简化后
import TestComponents from "@/ExportComponents/TestComponents";
文档
配置全局变量
当你需要全局变量的时候,可以使用DefinePlugin插件来配置。
使用场景,例如全局作用域 CONTEXT_PATH
具体看文档。
DefinePlugin
合理使用webpack提高开发效率的更多相关文章
- 如何利用 Visual Studio 自带工具提高开发效率
Visual Stuido 是一款强大的Windows 平台集成开发工具,你是否好好地利用了它呢? 显示行号 有些时候(比如错误定位)的时候,显示行号将有利于我们进行快速定位. 如何显示 1. 工具 ...
- 成吨提高开发效率:Intellij Shortcuts精简子集与思维模式
在线精简cheatsheet备查表:intellij.linesh.twGithub项目:intellij-mac-frequent-keymap Intellij的快捷键多而繁杂,从官方推荐的key ...
- 善用VS中的Code Snippet来提高开发效率
http://www.cnblogs.com/anderslly/archive/2009/02/16/vs2008-code-snippets.html http://www.cnblogs.com ...
- 实用手册:130+ 提高开发效率的 vim 常用命令
Vim 是从 vi 发展出来的一个文本编辑器.代码补完.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用.和 Emacs 并列成为类 Unix 系统用户最喜欢的编辑器.这里收录了130+程 ...
- 提高开发效率的 Eclipse 实用操作
工欲善其事,必先利其器.对于程序员来说,Eclipse便是其中的一个“器”.本文会从Eclipse快捷键和实用技巧这两个篇章展开介绍.Eclipse快捷键用熟后,不用鼠标,便可进行编程开发,避免鼠标分 ...
- 10 款提高开发效率的 jQuery/CSS3 组件
前端开发是一项十分繁琐而又耗体力的工作,如何更有效率的开发我们的应用,很多人会选择适当地使用一些jQuery插件.今天就要给大家分享10款可以提高开发效率的jQuery/CSS3组件.部分插件可以下载 ...
- 能够提高开发效率的Eclipse实用操作
工欲善其事,必先利其器.对于程序员来说,Eclipse便是其中的一个“器”.本文会从Eclipse快捷键和实用技巧这两个篇章展开介绍.Eclipse快捷键用熟后,不用鼠标,便可进行编程开发,避免鼠标分 ...
- tomcat免重启随意更改java代码 提高开发效率
转载:http://developer.51cto.com/art/201012/241243.htm 做为了一个java开发人员,总是为因为要增加一个类,或是增加删除一个方法,甚至修改一个小处代码而 ...
- 能够提高开发效率的 Eclipse 实用操作
工欲善其事,必先利其器.对于程序员来说,Eclipse便是其中的一个“器”.本文会从Eclipse快捷键和实用技巧这两个篇章展开介绍.Eclipse快捷键用熟后,不用鼠标,便可进行编程开发,避免鼠标分 ...
随机推荐
- 课堂使用的Linux命令
1.ls 显示目录文件 2.ls -l = ll 显示 3.vi 创建于编辑 4.mv 改名 5. ./ 当前目录 6.chmod 修改权限 4 读 2 编辑 1 运行 7.去除UI界面 syste ...
- js基础之语言部分必须要掌握的五大方阵
javascript基础部分可以从"数组, 函数, 作用域, 对象, 标准库"这5大方阵进行学习: (一).数组 数组的声明(2种):; a,自变量声明 var a = ['a', ...
- linux下避免僵尸进程的几种方法
linux下我们可以调用fork函数创建子进程,创建的子进程将会得到父进程的数据空间.堆.栈......副本(采用写时复制机制),子进程将会继承父进程的信号掩码.信号处理方式.当前工作目录.会话id. ...
- POJ 2406 Power String
算出next数组. 对于任何一个循环字串,len-next[len]必为最小循环节长度 若len%(len-next[len])==0 即为循环字串,n=len/(len-next[len]) 否则输 ...
- php 获取开始日期与结束日期之间所有月份
function showMonthRange($start, $end) { $end = date('Ym', strtotime($end)); // 转换为月 $range = []; $i ...
- redis redis-cli 操作指令
默认选择 db库是 0 redis-cli -p 6379 查看当前所在“db库”所有的缓存key redis 127.0.0.1:6379> keys * 选择 db库 redis 1 ...
- stm32之PWM博客好文收藏
https://www.cnblogs.com/jiwangbujiu/p/5616376.html STM32F103 使用TIM3产生四路PWM https://www.cnblogs.com/c ...
- ArcGis API for JavaScript学习——离线部署API
ArcGis API for JavaScript开发笔记——离线部署API 以3.18版API为例: 在加载图图前引用GIS服务是必须的.有两种方法,一是在线引用,而是离线部署引用. 在线引用: & ...
- MySQL的增、删、查、改操作命令
MySQL的增.删.查.改操作命令: 一.修改mysql数据库密码 格式:mysqladmin -u用户名 -p旧密码 password 新密码. 二.查看 查看多少个数据库:注意 后面带s #查看 ...
- Java语言基础---逻辑运算(长路短路运算)
长路短路运算的区别 长路与运算&:是指在两边都是整数时,是逐位与运算,在两边是关系运算时,是逻辑运算. 短路与运算&&:是指从左至右,遇到false,则停止后面的运算. 长路或 ...