實現(xiàn)exprss的全棧自動刷新

前言
項目的空檔期,就在東一頭西一頭的折騰(生命在于折騰嘛)。想使用express跟mongodb做一個小小的管理系統(tǒng),各種準備工作做好了,數(shù)據(jù)庫也跑通了,但是每次修改代碼的時候都要重啟服務(wù),簡直不能忍受。
1.嘗試supervisor
supervisor原本是用于服務(wù)器上Node.js應(yīng)用崩潰的時候,自己重新啟動。當然它也可以監(jiān)控你的項目的js文件變化,進而重啟來方便我們調(diào)試應(yīng)用程序。
安裝:npm install supervisor -g
啟動:supervisor -w routes views ./bin/www,其中-w routes views表示要監(jiān)聽的目錄
supervisor還支持多種參數(shù),列舉如下:

//要監(jiān)控的文件夾或js文件,默認為'.'
-w|--watch <watchItems>
//要忽略監(jiān)控的文件夾或js文件  
-i|--ignore <ignoreItems>
//監(jiān)控文件變化的時間間隔(周期),默認為Node.js內(nèi)置的時間
-p|--poll-interval <milliseconds>
//要監(jiān)控的文件擴展名,默認為'node|js'
-e|--extensions <extensions>
//要執(zhí)行的主應(yīng)用程序,默認為'node'
-x|--exec <executable>
//開啟debug模式(用--debug flag來啟動node)
--debug
//安靜模式,不顯示DEBUG信息
-q|--quiet

雖然能做到監(jiān)聽文件修改,但是每次都要手動刷新瀏覽器才能看到效果。
2.使用gulp+browsersync+nodemon
安裝:npm install --save-dev gulp
npm install --save-dev browser-sync
npm install --save-dev gulp-nodemon
添加gilpfile文件:

var browserSync = require('browser-sync');
var reload = browserSync.reload;
var nodemon = require('gulp-nodemon');
var gulp = require('gulp');
var less = require('gulp-less');

//express啟動項
gulp.task("node", function() {
    nodemon({
        script: './bin/www',
        ext: 'js html',
        env: {
            'NODE_ENV': 'development'
        }
    })
});

// 編譯less
// 在命令行輸入 gulp less 啟動此任務(wù)
gulp.task('less', function () {
    // 1. 找到 less 文件
    gulp.src('public/less/**/**.less')
    // 2. 編譯為css
        .pipe(less())
        // 3. 另存文件
        .pipe(gulp.dest('public/stylesheets/css'))
});

gulp.task('auto', function () {
    // 監(jiān)聽文件修改,當文件被修改則執(zhí)行 less任務(wù)
    gulp.watch('public/less/**.less', ['less'])
});

gulp.task('start', ["node","less","auto"], function() {
    //所需要監(jiān)聽的文件
    var files = [
        "routes/**",
        'views/**/*.html',
        'views/**/*.ejs',
        'views/**/*.jade',
        'views/**/*.pug',
        'public/**/*.*'
    ];

    browserSync.init(files, {
        proxy: 'http://192.168.49.1:3000', //所要代理的地址,端口要與bin/www中的端口一致
        browser: 'chrome',
        notify: false,
        port: 3001    //代理地址的端口號
    });

    gulp.watch(files).on("change", reload);
});

運行:gulp start啟動服務(wù)

服務(wù)啟動日志.jpg

展示一張實際效果圖


ok,可以愉快的開發(fā)了。不過服務(wù)端文件修改后要按兩次ctrl+s才會生效。具體什么情況沒去深究。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容