刀耕火种的时代已经过去,前端开发急需自动化,工程化。
有一天,你找到公司新人程序员小T和小F,给他们每个人分配了一个任务。小T和小F微笑的答应了,确定了项目的选型和结构,小T和小F准备安装依赖的模块。但是他们开始对于dependencies和devDependencies并没有那么在意:
程序员小T把所有的依赖模块都使用 npm install --save
,将依赖安装在项目中,并写入了package.json的 dependencies
(生产环境),最终导致项目臃肿不堪,前端是对性能的狂热追求者,最终小T的项目没有通过测试。
程序员小F把所有的依赖模块使用 npm install --save-dev
,将依赖安装在项目中,并写入了package.json中的 devDependencies
(本地开发环境),最终导致正常运行该项目使用了哪些依赖模块无从得知,预想后期会带来很多麻烦,导致小F的项目也没有通过测试
安装依赖的三种方式
小T和小F有些疑惑,项目本地明明正常,为什么都没有通过测试呢?他们决定弄个明白..
于是小T问,小F “你是怎么安装依赖的呀?” 小F:“我是使用 npm install --save-dev
安装依赖模块”,“哦,是这样呀,我是用过npm install –save安装的模块”,小T答到。
- npm install
- npm install –save
- npm install –save-dev
使用 npm install
将依赖模块安装到项目,但不写package.json(不推荐,这样最终需要手动添加);使用 npm install --save
将模块安装到项目,写入的package.json的 dependencies
中;使用 npm install --save-dev
将模块安装到本地,写入package.json的 devDependencies
中。
小T恍然大悟,原来是这样呀。那么前端工程化中的 开发环境
和 生产环境
到底有怎么样的区别呢?
dependencies和devDependencies的区别
原来devDependencies里面的模块只用于开发环境,不用于生产环境,而 dependencies 是需要发布到生产环境的。那究竟有什么区别呢?工程化为什么需要这两个环境?
开发环境
devDependencies中dev是develop的缩写,表示开发环境,即指开发阶段,对于一些仅在开发阶段需要的模块,项目正式投入后便不再需要的模块,我们选择把它们安装在 devDependencies
.
前端开发越来越体现工程化改革的姿态,无论是使用工具的进化,还是框架的更新迭代,前端对性能狂热追求伴随着工程化的进步也在不断提高,必然导致开发环境的多种多样,不可避免的导致开发环境的臃肿
生产环境
生产环境也就是真是真实环境,是线上用户接触的产生环境,因为开发环境的臃肿,不能直接用于生产环境,我们需要对环境可以优化的部分进行优化。
判断是开发环境还是生产环境
- 使用req.app.get(‘env’)
举个栗子:
app.use(function(err, req, res, next) { // set locals, only providing error in development res.locals.message = err.message; res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page res.status(err.status || 500); res.render('error'); });
注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。