怎么使用 nodejs 增加一个普通web项目的开发速度

最近遇到一个问题,我有一个普通的小项目,很简单,页面也就十几个,但是后天都是 restful 的接口,不能后端渲染。

这样一个小项目完全没必要做成 SPA 项目,复杂度高还麻烦,SEO 不够友好,而且项目再小它也有公共的页头,页尾,html 里面又不支持include 或者类似的标签,能直接导入一个html片段。

遇到这种情况自然就想到了 nodejs ,百度一下有很多解决方案,比如  webpack ,gulp 等。

最后我选择了 gulp 使用起来非常方便。而且插件很多,很全。比如:

 
 
var gulp = require ( 'gulp' ),
fileinclude = require ( 'gulp-file-include' ), // 页头页尾 直接使用 @@include 包含进去,而且还支持参数。
sass = require ( 'gulp-sass' ), // sass scss 文件编译
connect = require ( 'gulp-connect' ),            // 前段web服务,测试起来非常方便 支持添加代理配置
concat = require ( 'gulp-concat' ),              // css js image 文件合并,减少 js css 请求次数,提高效率,image 统一目录
uglify = require ( 'gulp-uglify' ),              // js 文件压缩
clearcss = require ( 'gulp-clean-css' );         // css 文件压缩

而且使用起来也不麻烦,非常方便。没有多余配置。编译完成后直接完整目录覆盖线上项目目录。下面给出完整 gulpfile.js 

 
 
var gulp = require ( 'gulp' ),
fileinclude = require ( 'gulp-file-include' ),
sass = require ( 'gulp-sass' ),
connect = require ( 'gulp-connect' ),
concat = require ( 'gulp-concat' ),
uglify = require ( 'gulp-uglify' ),
clearcss = require ( 'gulp-clean-css' );
gulp . task ( 'fileinclude' , function (){
gulp . src ([ './src/*.html' ]) //主文件
. pipe ( fileinclude ({
prefix : '@@' , //变量前缀 @@include
basepath : './src/include' , //引用文件路径
indent : true //保留文件的缩进
}))
. pipe ( gulp . dest ( './dist' )); //输出文件路径
});
gulp . task ( 'sass' , function (){
gulp . src ([ 'src/css/*.sass' , 'src/css/*.css' ]) //多个文件以数组形式传入
. pipe ( sass ())
. pipe ( clearcss ())
. pipe ( gulp . dest ( './dist/static/css' )); //将会在src/css下生成index.css以及detail.css
});
gulp . task ( 'webserver' , function (){
connect . server ({
name : 'xmr' ,
root : 'dist' ,
port : 8080 ,
livereload : true
});
});
gulp . task ( 'fileconcat' , function (){
gulp . src ([ 'src/js/*.js' ])
. pipe ( concat ( 'main.js' ))
. pipe ( uglify ())
. pipe ( gulp . dest ( './dist/static/js' ));
gulp . src ([ 'src/image/*.*' ])
. pipe ( gulp . dest ( './dist/static/image' ));
gulp . src ([ 'src/data/*.*' ])
. pipe ( gulp . dest ( './dist/data' ));
});
gulp . task ( 'watch' , function () {
gulp . watch ([ './src/*.html' ], [ 'default' ]);
});
gulp . task ( 'default' ,[ 'fileinclude' , 'sass' , 'webserver' , 'watch' , 'fileconcat' ], function () {
console . log ( 'build is ok.' )
});


项目启动直接指向  gulp 没有其他参数,使用默认任务 default

package.json

 
 
{
"name" : "monero-china" ,
"version" : "1.0.0" ,
"description" : "" ,
"main" : "gulpfile.js" ,
"scripts" : {
"test" : "echo \" Error: no test specified \" && exit 1"
},
"author" : "" ,
"license" : "ISC" ,
"devDependencies" : {
"gulp" : "^3.9.1" ,
"gulp-concat" : "^2.6.1" ,
"gulp-connect" : "^5.5.0" ,
"gulp-file-include" : "^2.0.1" ,
"gulp-sass" : "^3.1.0" ,
"gulp-uglify" : "^3.0.0" ,
"gulp-clean-css" : "^3.9.3"
},
"dependencies" : {
"lodash" : "^4.17.5"
}
}


项目目录

project-name

        |------src

                   | -----include

                                   |------header.html

                                   |------footer.html

                   |------js

                   |------css

                   |------image

                   |------index.html

        | -----gulpfile.js

         |------package.json


猜你喜欢

转载自blog.csdn.net/wab719591157/article/details/79851023