摘要:一前言上節(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.namegit 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
摘要:一前言上節(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...
摘要:從前端小白到精通首先需要自行下載安裝安裝地址我的版本是,安裝之后,需要安裝依賴以及生成調(diào)試工具,親測對版本比較敏感,只兼容低版本的所以調(diào)試可以用或者用軟件進(jìn)行調(diào)試安裝調(diào)試鏈接,下載包,忘記了模板引擎用的是,喜歡用其實一樣,只是語法有 從前端小白到精通express 首先需要自行下載安裝nodejs nodejs安裝地址//我的版本是4.7.0, 安裝nodejs之后,需要npm in...
摘要:調(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...
摘要:前言學(xué)習(xí)也有一段時間了,踩過許多坑,在這里打算記錄一下自己覺得有用的點,以備以后所需。代碼調(diào)試一般我們調(diào)試項目都是通過前端或者后端,這總是顯得不夠靈活。即使是內(nèi)置的也不夠友好。這樣修改文件時服務(wù)就會自動重啟了。 前言 學(xué)習(xí)NodeJs也有一段時間了,踩過許多坑,在這里打算記錄一下自己覺得有用的點,以備以后所需。 代碼調(diào)試 一般我們調(diào)試Js項目都是通過Alert()(前端)或者 Cons...
摘要:云集一線大廠有真正實力的程序員團(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)操作過程。 云...
閱讀 2043·2021-09-07 10:14
閱讀 1478·2019-08-30 15:53
閱讀 2270·2019-08-30 12:43
閱讀 2861·2019-08-29 16:37
閱讀 754·2019-08-26 13:29
閱讀 2000·2019-08-26 13:28
閱讀 437·2019-08-23 18:33
閱讀 3500·2019-08-23 16:09