合理使用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快捷键用熟后,不用鼠标,便可进行编程开发,避免鼠标分 ...
随机推荐
- session 关于localhost和本地IP地址 不共享问题
打比方, 一个请求 localhost:8080/test/test ,一个本地Ip(172.1.1.1:8080/test/test) 1.请求localhost方式 HttpSession s ...
- 安装配置eclipse的图文步骤
装eclipse 之前要确定自己是否已经安装了java开发环境JDK,JDK的版本64位要下载Eclipse版本64位:JDK32位,要下载Eclipse32位. 一.去eclipse官网下载ecli ...
- nginx安装php环境
1.php下载地址 https://secure.php.net/downloads.php(此次安装版本为7.0.33) 2.安装依赖的包 yum -y install libxml2 yum -y ...
- 如何禁止用户连续点击一个按钮事件详细JS
<input type="button" id="submit" value="提交"> <script> $(do ...
- JZOJ 4737. 金色丝线将瞬间一分为二 二分答案
4737. 金色丝线将瞬间一分为二 Time Limits: 1000 ms Memory Limits: 262144 KB Detailed Limits Goto ProblemSet ...
- configParser模块详谈
前言 使用配置文件来灵活的配置一些参数是一件很常见的事情,配置文件的解析并不复杂,在python里更是如此,在官方发布的库中就包含有做这件事情的库,那就是configParser configPars ...
- mongodb安装,库操作,集合操作(表),文档操作(记录)
安装 1.下载地址 https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-ssl-4.0.8-signed.msi 2.如果报没 ...
- 模型类序列化器ModelSerializer
定义 比如我们创建一个BookInfoSerializer class BookInfoSerializer(serializers.ModelSerializer): ""&qu ...
- [Poj1273]Drainage Ditches(网络流)
Description 给图,求最大流 最大流模板题,这里用dinic Code #include <cstdio> #include <cstring> #include & ...
- Android 简历+面试题 汇总
1.教你写简历 1.1.你真的会写简历吗? 1.2.80%以上简历都是不合格的 1.3.推荐两个技术简历模板 1.4.关于程序员求职简历 1.5.程序员简历模板列表 2.面试题 2.1.国内一线互联网 ...