合理使用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快捷键用熟后,不用鼠标,便可进行编程开发,避免鼠标分 ...
随机推荐
- oc描述器排序
int main(int argc, const char * argv[]) { @autoreleasepool { NSArray *array = @[CreateDict(@"王思 ...
- JSP出现"属性值[request.getParameter("myMessage")]引用["],在值内使用时必须被转义"的解决方法
写JSP时出现属性值[request.getParameter("myMessage")]引用["],在值内使用时必须被转义. 源代码: <jsp:setPrope ...
- Zookeeper协调服务系统·ELK日志管理系统简介
Zookeeper协调服务系统: 说明:它分布式系统中的协调服务系统,是Hadoop下的一个子项目,可提供的服务有:名字服务.配置服务.分布式同步.组服务等. 3个角色:Leaders.Follow. ...
- 如何将emoji表情存放到mysql数据库中
昨晚在爬取猫眼电影评论时在将评论信息插入到数据库中时出现问题,总是在插入一条数据时就会报错: 看着应该时字符编码的问题,比如新建的数据库新建的表,默认字符编码是:Latin1, 这种编码是无法插入中文 ...
- 读《深入理解jvm虚拟机》之长期存活对象进入老年代,有感!!!!
关于这一段代码 有几个不是让人很理解的地方,我一一说来. 1.Desired survivor size 524288 bytes 关于这个512KB空间是怎么来的,JVM有这样一个参数: -XX:T ...
- SharedPreferences使用(通过键值保存数据)
保存数据到SharedPreferences中 要想使用SharedPreferences来存储数据, 首先需要获取到SharedPreferences对象. Android中主要提供了三种方法用于得 ...
- Codeforces 678F Lena and Queries
题意: 你有一个点集,有三种操作: 往集合里插入一个点\((x, y)\) 从集合中删除第\(i\)次操作插入的点 对于给出的\(q\),询问点集中\(x \cdot q + y\)的最大值 分析: ...
- “帮你APP”团队冲刺8
1.整个项目预期的任务量 (任务量 = 所有工作的预期时间)和 目前已经花的时间 (所有记录的 ‘已经花费的时间’),还剩余的时间(所有工作的 ‘剩余时间’) : 所有工作的预期时间:88h 目前已经 ...
- Linear Regression 线性回归
Motivation 问题描述 收集到某一地区的房子面积和房价的数据(x, y)42组,对于一套已知面积的房子预测其房价?   由房价数据可视化图可以看出,可以使用一条直线拟合房价.通过这种假设得 ...
- 设计模式之序章-UML类图那点事儿
设计模式之序-UML类图那点事儿 序 打14年年底就像写那么一个系列,用于讲设计模式的,代码基于JAVA语言,最早接触设计模式是大一还是大二来着,那时候网上有人给推荐书,其中就有设计模式,当时给我推荐 ...