Web 应用的构建实战
包里会包含应用程序所需的所有二进制文件、数据和配置文件等等。
上传包。在完成打包后,我们就可以上传这个软件包了。
部署。最后,我们就可以在我们的线上环境中安装这个软件包。
Web 应用的构建实战
下面就让我们来构建一个简单的Web应用,来实践一下这个过程。在这里,我们要使用到的一个工具是 Gulp,当然对于 Grunt 也是类似的。
Gulp 入门指南
Gulp.js 是一个自动化构建工具,开发者可以使用它在项目开发过程中自动执行常见任务。Gulp.js 是基于 Node.js 构建的,利用 Node.js 流的威力,你
可以快速构建项目并减少频繁的 IO 操作。Gulp.js 源文件和你用来定义任务的 Gulp 文件都是通过 JavaScript(或者 CoffeeScript)源码来实现的。
- 全局安装 gulp:
$ npm install --global gulp
- 作为项目的开发依赖(devDependencies)安装:
$ npm install --save-dev gulp
- 在项目根目录下创建一个名为 gulpfile.js 的文件:
var gulp = require('gulp');
gulp.task('default', function() { // 将你的默认的任务代码放在这
});
- 运行 gulp:
$ gulp
默认的名为default的任务(task)将会被运行,在这里,这个任务并未做任何事情。
接下来,我们就可以打造我们的应用的构建系统了。
的常见错误,所以程序员们开发了一个被称作 lint 的配套项目用来扫描源文件,查找问题。
对应于不同的语言都会有不同的lint工具,在JavaScript中就有JSLint。JavaScript 是一门年轻、语法灵活多变且对格式要求相对松散的语言,因此这样的工具对于这门语
言来说比较重要。
2011 年,一个叫 Anton Kovalyov 的前端程序员借助开源社区的力量弄出来了 JSHint,其思想基本上和 JSLint 是一致的,但是其有一下几项优势:
- 可配置规则,每个团队可以自己定义自己想要的代码规范。
- 对社区非常友好,社区支持度高。
- 可定制的结果报表。
下面就让我们来安装这个软件吧:
安装及使用
npm install jshint gulp-jshint --save-dev
示例代码:
var jshint = require('gulp-jshint');
var gulp= require('gulp');
gulp.task('lint', function() { return gulp.src('./lib/*.js')
.pipe(jshint())
.pipe(jshint.reporter('YOUR_REPORTER_HERE'));
});
自动化测试工具一般来说,自动测试应该从两部分考虑:
- 单元测试
- 功能测试
Mocha 是一个可以运行在 Node.js 和浏览器环境里的测试框架,
var mocha = require('gulp-mocha');
gulp.task('default', function () { return gulp.src('test.js', {read: false})
// gulp-mocha needs filepaths so you can't have any plugins before it .pipe(mocha({reporter: 'nyan'}));
});
编译对于静态型语言来说,编译是一个很重要的步骤。不过,对于动态语言来说也存在这样的工具。
动态语言的编译
可以说这类型的语言,是以我们常见的 JavaScript 为代表。
- CoffeeScript 是一套 JavaScript 的转译语言,并且它增强了 JavaScript 的简洁性
与可读性。
- Webpack 是一款模块加载器兼打包工具,它能把各种资源,例如 JS(含 JSX)、
coffee、样式(含 less/sass)、图片等都作为模块来使用和处理。
- Babel 是一个转换编译器,它能将 ES6 转换成可以在浏览器中运行的代码。
打包在 GNU/Linux 系统的软件包里通过包含了已压缩的软件文件集以及该软件的内容信息。常见的软件包有
- DEB。Debian 软件包格式,文件扩展名为.deb
- RPM(原Red Hat Package Manager,现在是一个递归缩写)。该软件包分为二进
制包(Binary)、源代码包(Source)和 Delta 包三种。二进制包可以直接安装在计算机中,而源代码包将会由RPM自动编译、安装。源代码包经常以src.rpm作
为后缀名。
- 压缩文档tar.gz。通常是该软件的源码,故而在安装的过程中需要编译、安装,并
且在编译时需要自己手动安装所需要依赖的软件。在软件仓库没有最新版本的软件时,tar.gz 往往是最好的选择。
由于这里的打包过程比较繁琐,就不介绍了。有兴趣的读者可以自己了解一下。
全站分卷索引 · 119 卷
- 1Growth: 全栈增长工程师指南
- 2软件开发的核心难题:沟通
- 3大公司的专家与小公司的全栈
- 4全栈工程师的未来:无栈
- 5基础知识篇
- 6工具只是辅助
- 7语言也是一种工具
- 8提高效率的工具
- 9IDE
- 10终端或命令提示符
- 11包管理
- 12环境搭建
- 13Windows
- 14GNU/Linux
- 15学好一门语言的艺术
- 16输出是最好的输入
- 17如何应用一门新的技术
- 18Web 编程基础
- 19从 HTML 到页面显示
- 20HTML
- 21中文?
- 22其他 HTML 标记
- 23小结
- 24CSS
- 25简介
- 26样式与目标
- 27更有趣的 CSS
- 28JavaScript
- 29JavaScriptFul
- 30面向对象
- 31其他
- 32前端与后台
- 33后台语言选择
- 34PHP
- 35Model
- 36View
- 37Controller
- 38后台即服务
- 39后台即服务
- 40数据库
- 41搜索引擎
- 42前端框架选择
- 43前台与后台交互
- 44JSON
- 45WebSocket
- 46编码过程
- 47Web 应用的构建系统
- 48Web 应用的构建过程
- 49Web 应用的构建实战
- 50Git 与版本控制
- 51Tasking
- 52Tasking 开发任务
- 53写代码只是在码字
- 54内置索引与外置引擎
- 55内置索引与外置引擎
- 56如何测试
- 57测试替身
- 58Mock
- 59测试先行
- 60可读的代码
- 61命名
- 62函数长度
- 63代码重构
- 64提炼函数
- 65内联函数
- 66查询取代临时变量
- 67重构到设计模式
- 68上线
- 69隔离硬件:虚拟机
- 70隔离操作系统:容器虚拟化
- 71隔离底层:Servlet 容器
- 72隔离依赖版本:虚拟环境
- 73隔离语言:DSL
- 74GNU/Linux
- 75HTTP 服务器
- 76数据库端缓存
- 77前端缓存
- 78运行机制
- 79自动化部署
- 80依赖与包仓库
- 81构建软件包
- 82数据分析
- 83想法-构建
- 84产品-衡量
- 85数据分析
- 86分析数据
- 87用户数据分析:Google Analytics
- 88流量获取
- 89移动应用
- 90网站性能
- 91SEO
- 92什么样的网站需要 SEO?
- 93内容
- 94UX 入门
- 95什么是简单?
- 96进阶
- 97认知设计
- 98持续交付
- 99持续集成系统
- 100持续交付
- 101持续部署
- 102持续阅读
- 103遗留系统与修改代码
- 104遗留代码
- 105修改遗留代码
- 106速度优化
- 107模块重构
- 108Retro
- 109三个维度
- 110架构模式
- 111预设计式架构
- 112演进式架构:拥抱变化
- 113意图导向
- 114重构
- 115模式与演进
- 116相关阅读资料
- 117架构解耦
- 118CQRS
- 119CQRS 结合微服务