国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

NODEJS項目實踐0.5 - 完結(jié)[inspector,git]

Nino / 3155人閱讀

摘要:一前言上節(jié)我們主要應(yīng)用了部分模塊功能,本節(jié)我們再演示下常用的功能,使用,并發(fā)布到阿里云,就完成了系統(tǒng)的教程。本身支持很好的的開發(fā)體驗,其也集成了測試功能,但這個不是我推薦的,自行百度調(diào)試。

一、前言

上節(jié)我們主要應(yīng)用了部分nodejs模塊功能,本節(jié)我們再演示下nodejs常用的debug功能,git使用,并發(fā)布到阿里云,就完成了 0.*系統(tǒng)的教程。

GIT:https://github.com/xiaolulu/mynodejs.git

參考:http://www.upopen.cn

二、調(diào)試模塊

debug,即開發(fā)過程中的運行跟蹤,是開發(fā)過程中的不可缺少的。如同頁面端開發(fā)過程中,如果沒有chrome的inspect element,開發(fā)過程中的問題排查,將是非常困難的。

???nodejs目前常用的有兩種類型的調(diào)試方案

???1、以 webstorm為代表的開發(fā)編輯器類調(diào)試。webstrom本身支持很好的nodejs的開發(fā)體驗,其也集成了測試功能,但這個不是我推薦的,自行百度 “ webstorm nodejs 調(diào)試 ”。

???2、第二種是npm 下的 node-inspector,我使用的編輯器就是ubuntu下的gedit,即使在win7下使用的也是較古老的 edit plus,因為開發(fā)過程中,不需要什么提示功能,webstorm本身很大,啟動起來也占用很大的資源。相比之下,gedit + node-inspector,則更加輕量。

???全局安裝:

npm install -g node-inspector

???啟動

???ssh執(zhí)行

node-inspector

???會提示

Visit http://127.0.0.1:8080/?ws=127.0.0.1:8080&port=5858 to start debugging.

???再開一個終端,cd到項目目錄,執(zhí)行

node-dev –debug app.js

???上一節(jié)我們講node-dev,使用了其自動 restarting,如果不需要高度,執(zhí)行 node-dev app.js即可。

???瀏覽器A打開

http://127.0.0.1:8080/?ws=127.0.0.1:8080&port=5858

???瀏覽器A即會顯示成debug模式,

???再用瀏覽器B打開我們項目,瀏覽器A就會顯示nodejs端的代碼,調(diào)用起來和頁面端一樣一樣的。所以用 node-inspector可以安裝后即可快速上手,不需要任何配置,使用起來不需額外成本,這也是我推薦的原因。

???如下圖:

三、git

???git的常用命令可參見

http://www.upopen.cn/article/list?kind=git

???參照上面的教程,在 github上申請賬號、新建項目、添加本地生成的key之后,就可以開始使用了。

???cd到我們的項目 root,執(zhí)行

git init    

???將本地文件夾初即化為 git目錄,通過 ls -la,可以看到其下多了.ssh的隱藏文件夾,用于存放git信息

???執(zhí)行

git remote add origin git@github.com:/.git

???將本地目錄和遠(yuǎn)程目錄關(guān)聯(lián)起來

git config -- global user.name 

git config – global user.email  

???配置自己的git信息,用于提交的記錄author。

git add *

???添加所有的文件到暫存區(qū)

git commit -m "我的第一個項目"

???將暫存區(qū)的文件提交到 git 目錄

git push -u origin master

???按提示輸入你的git帳號及密碼,將git 目錄的文件提交到遠(yuǎn)程github上

???我們即完成了本地代碼的提交,具體命令解釋及更多命令應(yīng)用還是參照

???http://www.upopen.cn/article/list?kind=git

四、服務(wù)器

???此處我使用的阿里云服務(wù)器,管理上簡單些,選了個最低配置,1000/年,www.upopen.cn就是在阿里云上,七牛,百度也提供了這樣的服務(wù)器。購買好服務(wù)器后,選擇安裝ubuntu系統(tǒng)。

???連接服務(wù)器

ssh  -l root

???用戶名先默認(rèn)用 root即可。按提示輸入密碼即可登錄

???按項目約定安裝,nginx / nodejs / mongo / git 等,并創(chuàng)建根目錄

???克隆遠(yuǎn)程庫到本地

git clone root git@github.com:xiaolulu/mynodejs.git

???拉取遠(yuǎn)程庫的數(shù)據(jù)到本地

git pull origin master

???在此我們使用了與上面git不同的命令,其實也可以按init/ remote來,為了多使用幾個命令,另外,第三
部分是新建庫,此部主要是拉取。對后面的使用是一樣的。

???同樣的配置成功后,訪問該你的服務(wù)器IP,站點即發(fā)布成功。

???如果有域名了更好,不過域名現(xiàn)在都需要備案了,需要些時間。

五、validate.js

???最后稍講下頁面端的js,原本不是我們本系列的重點,和大家探討下,如何寫一個可復(fù)用、解耦的組件,小微框架的思想也不過如此。

???驗證組件有很多種寫法,但往往越高級的,限制性越大,我們寫一個輕量級的,拋磚引玉。

???首先我們分析下驗證功能,得出以下一些原則

???1、每個輸入項都可以配置驗證規(guī)則

???2、可指定觸發(fā)事件,如keyup或 change時觸發(fā)驗證

???3、可配置一些通用的規(guī)則如非空、最小值、最大值、只能輸入數(shù)字、字母、電話、身份證等

???4、可配置自定義規(guī)則,如注冊時,再次輸入密碼項的規(guī)則和密碼項需一致。

???5、提供錯誤提示的回調(diào),往往錯誤提示形式是一致的,不需要提供回調(diào),我們提供更自由的顯示方式。

???以注冊頁面表單為例,定義輸入框的規(guī)則。在root/static/module/issue/register.js下新增

javascript    var username = $( "#username" ),
        password = $( "#password" ),
        email = $( "#email" );
    //定義驗證規(guī)則
    var usernameRule = [{
            "noBlank": "請輸入用戶名",    //非空
            "min": [ 3, "用戶名不能少于3位"],   //最小
            "max": [ 16, "用戶名長度不能多于16位"],   //最大
            "typeEN": "用戶名只能為字母及數(shù)字"     //準(zhǔn)輸入類型
        }, function( prompt ){  //錯誤提示回調(diào)
            $( "#usernameTip" ).html( prompt );
        }],
        passwordRule = [{
            "noBlank": "請輸入密碼",
            "self": function( cb ){ //自定義規(guī)則
                cb( "密碼不能全為數(shù)字" );
                return isNaN( this.value - 0 );
            }
        }],
        email = [{
            "noBlank": "請輸入注冊郵箱",
            "typeEmail": "郵箱格式不正確"  //指定某定義規(guī)則
        }, function( prompt ){
            $( "#emailTip" ).html( prompt );
        }];

    //為指定指定表單添加指定觸發(fā)事件的指定規(guī)則
    validate( username, [ "keyup" ], usernameRule );
    validate( password, [ "change" ], passwordRule );
    validate( email, [ "foucsOut" ], emailRule );

???在root/static下新建 widget/,用于存放組件。其下新建 validate/validate.js

javascriptdefine(function(  ){

    var isArray = function( value ){
        return Object.prototype.toString.call( value ) == "[object ]"
    }

    /*定義常用規(guī)則,通過判斷值是否符合規(guī)則返回true / false */
    var Regular = {

        //非空
        noBlank: function( value ){
            return !!value;
        },
        //最小
        min: function( value, rule ){
            return value.length >= rule;
        },
        //最大
        max: function( value, rule ){
            return value.length <= rule;
        },
        //中文、英文
        typeZE: function( value ){
            return /^[u4E00-u9FA5uf900-ufa2duFE30-uFFA0a-zA-Z]+$/.test( value );
        },
        //英文、數(shù)字
        typeEN: function( value ){
            return /^[0-9|a-z|A-Z]+$/.test( value );
        },
        //數(shù)字
        typeNum: function( value ){
            return !isNaN( value );
        },
        //電話
        typePhone: function( value ){
            return /^1[0-9]{10}$/.test( value );
        },
        //email
        typeEmail: function( value ){
            return /^(w)+(.w+)*@(w)+((.w+)+)$/.test(value)
        }

    }
    //循環(huán)對規(guī)則進(jìn)行驗證,主要分類兩種。一種是self,一種是已定義的常用規(guī)則。
    function check( rules, cb ){

        var rule,
            prompt,
            codex,
            value = this.value;
        for ( rule in rules ){

            prompt = rules[ rule ];
            isArray( prompt ) && ( codex = prompt[0] ) && ( prompt = prompt[1] );
            //這里是針對 即帶值,又帶提示的規(guī)則 [ 3, "用戶名不能少于3位"]
            //否則只帶提示的規(guī)則,如非空,電話號碼等值可定的規(guī)則
            if( rule == "self" ){   //驗證自定義的定義
                if( rules[ rule ].call( this, cb ) !== true ){
                    return false;
                };
            } else if( !Regular[ rule ]( value, codex ) ){  //驗證上面定義過的規(guī)則
                cb( prompt )
                return false;
            }
            cb( "" );
        }
        return true;

    }
    //開始的驗證函數(shù),對某元素el添加指定事件events的驗證規(guī)則rules,驗證結(jié)果在cb中執(zhí)行
    function validate( el, events, rules, cb ){

        if( rules ){

            cb = rules[1];
            rules = rules[0];
            $.each( events, function( k, event ){
                el.on( event, function(){
                    check.call( this, rules, cb );
                });

            });

        } else {
            //這里是對不用傳觸發(fā)條件,直接進(jìn)行驗證的規(guī)則。主要是針對form.submit時需一次驗證所有輸入框時
            cb = events[1];
            rules = events[0];
            return check.call( el.get( 0 ), rules, cb );

        }

    }

    return validate

})

???上面是寫了一種較初級的驗證函數(shù),不過也可以解決大部分的驗證場景,常用規(guī)則可自行添加。

六、結(jié)語

???至此,除了將數(shù)據(jù)存取部分和前臺分離 及redis外,我們基本完成了0.1中所設(shè)定的功能,并應(yīng)用到所列舉的知識點,各知識點都是針對本項目使用了初級的功能。

???簡單總結(jié)下,前面5節(jié)所講過的知識點:

???1、安裝、使用ubuntu,在Linux平臺下開發(fā)項目,提高開發(fā)效率,擴(kuò)展知識面。

???2、使用nodejs,基于express、ejs框架,實現(xiàn)的基礎(chǔ)的靜態(tài)頁面訪問

???3、使用nginx,搭建靜態(tài)服務(wù)器,并做了代理轉(zhuǎn)發(fā)及負(fù)載

???4、據(jù)項目優(yōu)化目錄結(jié)構(gòu),做到分類明晰,靜態(tài)、項目資源分離,各文件做意義劃分,便于后面擴(kuò)展

???5、使用mongodb,實現(xiàn)了數(shù)據(jù)的存取,完成注冊、登錄等操作的客戶端 - 服務(wù)端的數(shù)據(jù)交互

???6、頁面端使用requireJs來做模塊管理并簡單實現(xiàn)了驗證模塊。

???7、使用了npm 的 node-dev[自啟動]、md5[加密]、domain[異步異常]、pm2[進(jìn)程守護(hù)]、log4js[服務(wù)日志]、node-inspector[開發(fā)調(diào)試]等模塊。

???8、實現(xiàn)了cookie和session的操作,保持用戶登錄狀態(tài)

???9、實現(xiàn)據(jù)登錄狀態(tài)的頁面訪問準(zhǔn)入控制權(quán)限。

???10、git操作,提交到服務(wù)器上。

???上面的知識在項目上應(yīng)用的較初級,后面對每個技術(shù)點都會做多帶帶的文章補(bǔ)充,希望對我們都有所幫助,拋磚引玉,大家多做深入研究。

???下一個系列的教程中,我們會對上面這些知識有個逐步高級的應(yīng)用,并增加markdown,頁面靜態(tài)化,nodejs的單元測試等,這塊在upopen.cn的文章系統(tǒng)上已經(jīng)應(yīng)用。

???本部分的教程結(jié)束。謝謝!

技術(shù)新Q群:43548556

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/18768.html

相關(guān)文章

  • NODEJS項目實踐0.5 - 完結(jié)[inspector,git]

    摘要:一前言上節(jié)我們主要應(yīng)用了部分模塊功能,本節(jié)我們再演示下常用的功能,使用,并發(fā)布到阿里云,就完成了系統(tǒng)的教程。本身支持很好的的開發(fā)體驗,其也集成了測試功能,但這個不是我推薦的,自行百度調(diào)試。 一、前言 上節(jié)我們主要應(yīng)用了部分nodejs模塊功能,本節(jié)我們再演示下nodejs常用的debug功能,git使用,并發(fā)布到阿里云,就完成了 0.*系統(tǒng)的教程。 GIT:https://gith...

    edgardeng 評論0 收藏0
  • express中間層搭建前端項目1

    摘要:從前端小白到精通首先需要自行下載安裝安裝地址我的版本是,安裝之后,需要安裝依賴以及生成調(diào)試工具,親測對版本比較敏感,只兼容低版本的所以調(diào)試可以用或者用軟件進(jìn)行調(diào)試安裝調(diào)試鏈接,下載包,忘記了模板引擎用的是,喜歡用其實一樣,只是語法有 從前端小白到精通express 首先需要自行下載安裝nodejs nodejs安裝地址//我的版本是4.7.0, 安裝nodejs之后,需要npm in...

    stefanieliang 評論0 收藏0
  • nodejs調(diào)試方法

    摘要:調(diào)試方法提供了一個內(nèi)建調(diào)試器來幫助開發(fā)者調(diào)試應(yīng)用程序。這兩個參數(shù)只會啟動監(jiān)聽模式,不會進(jìn)入命令行調(diào)試模式,而且前者會運行完所有代碼,通常可用于事件調(diào)試,后者會在進(jìn)入時中斷,方便從頭開始調(diào)試。安裝編輯器使用配置調(diào)試的配置信息如下圖。 Nodejs調(diào)試方法 1. Node debug Nodejs提供了一個內(nèi)建調(diào)試器來幫助開發(fā)者調(diào)試應(yīng)用程序。使用debug模式時,Node.js 會啟動De...

    jcc 評論0 收藏0
  • NodeJs項目中的一些要點記錄

    摘要:前言學(xué)習(xí)也有一段時間了,踩過許多坑,在這里打算記錄一下自己覺得有用的點,以備以后所需。代碼調(diào)試一般我們調(diào)試項目都是通過前端或者后端,這總是顯得不夠靈活。即使是內(nèi)置的也不夠友好。這樣修改文件時服務(wù)就會自動重啟了。 前言 學(xué)習(xí)NodeJs也有一段時間了,踩過許多坑,在這里打算記錄一下自己覺得有用的點,以備以后所需。 代碼調(diào)試 一般我們調(diào)試Js項目都是通過Alert()(前端)或者 Cons...

    superPershing 評論0 收藏0
  • 完結(jié)匯總】iKcamp出品基于Koa2搭建Node.js實戰(zhàn)共十一堂課(含視頻)

    摘要:云集一線大廠有真正實力的程序員團(tuán)隊云集一線大廠經(jīng)驗豐厚的碼農(nóng),開源奉獻(xiàn)各教程。融合多種常見的需求場景網(wǎng)絡(luò)請求解析模板引擎靜態(tài)資源日志記錄錯誤請求處理。結(jié)合語句中轉(zhuǎn)中間件控制權(quán),解決回調(diào)地獄問題。注意分支中的目錄為當(dāng)節(jié)課程后的完整代碼。 ?? ?與眾不同的學(xué)習(xí)方式,為你打開新的編程視角 獨特的『同步學(xué)習(xí)』方式 文案講解+視頻演示,文字可激發(fā)深層的思考、視頻可還原實戰(zhàn)操作過程。 云...

    sPeng 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<