摘要:創(chuàng)建成功后進入文件夾執(zhí)行執(zhí)行作用創(chuàng)建文件,維護項目的依賴文件解釋創(chuàng)建文件執(zhí)行作用用系統(tǒng)的編輯器打開文件。我的技術(shù)新群上一篇前后端分離項目實踐分析下一篇公司項目實踐
一、前言
前端如何獨立用nodeJs實現(xiàn)一個簡單的注冊、登錄功能,是不是只用nodejs+sql就可以了?其實是可以實現(xiàn),但離實際應(yīng)用還有距離,那要怎么做才是實際可用的。
網(wǎng)上有很多nodeJs的示例,包括和 sql / nginx … 等周邊技術(shù)結(jié)合demo,但通常都是做為入門演示或解決某一問題,少有站在項目實際完整應(yīng)用角度,給出一個整體的解決方案。一些前端朋友和我討論nodejs時,也多表現(xiàn)出對服務(wù)端的欠缺,雖然知道nodejs很好,但難以實際應(yīng)用。
我在這塊做了些研究,也在公司項目中有應(yīng)用,在此和大家分享下,如何用nodejs實現(xiàn)一個實際可用的項目,需要操作的步驟及相關(guān)的技術(shù)應(yīng)用?,F(xiàn)在還沒想好做怎樣的一個demo,就隨想隨做,如有意義的需求我們也可以一起實現(xiàn)下,若有欠缺,也歡迎共同討論。
第一次做,我們就先實現(xiàn)下最常用的注冊和登錄。
技術(shù)點:
1、用戶注冊站點,需要輸入用戶名、密碼、郵箱,驗證有效性。[ nodejs / express / validate / md5 / node-dev / requirejs ] 2、發(fā)送驗證郵件,用戶通過郵箱驗證后,注冊成功。[ mongodb / mailer ] 3、用戶登錄,可以訪問需要登錄權(quán)限的頁面[ redis / 權(quán)限控制 ] 4、本項目在linux上開發(fā) 及 發(fā)布部署 [ git / nginx / ubuntu / aliyun / pm2 ] 5、考慮到前后端分離的需要,我們也將分別搭建前臺服務(wù)(接收頁面請求)、后臺服務(wù)(數(shù)據(jù)存儲) [ 項目架構(gòu) ]??*因涉及到的技術(shù)點較多,在本項目中每一種技術(shù)如nginx只對使用到的部分做講解,其它部分后面用到再講,循序漸進,基礎(chǔ)較弱者也好逐步接受。
??*本節(jié),我們將實現(xiàn)unbuntu、nodejs、nginx的安裝及初步使用,搭建一個可訪問的服務(wù)
二、linux環(huán)境本次開發(fā)將linux上開發(fā),建議前端開發(fā)者嘗試使用linux系統(tǒng),其能拓展技術(shù)面,在提升開發(fā)、發(fā)布效率等方面也有好處,初次使用linux會有些障礙,不過現(xiàn)在linux也有類win7的漂亮桌面環(huán)境,操作大致相似,在命令不熟時也可以正常使用,堅持用兩周,是可以適應(yīng)的。
選擇系統(tǒng)上建議安裝適合個人開發(fā)者的ubuntu。
建議安裝雙系統(tǒng),虛擬機太弱,完全安裝ubuntu,使用又不便,有些軟件如PS是不支持linux的。
win7下安裝ubuntu 的雙系統(tǒng),WIN7安裝ubutntu 步驟參見 http://www.upopen.cn/article/info?id=559291b3f0e6e0665b000001
安裝成功后,我們就開始提高B格之旅,接下來會對用到的linux操作做簡單解釋,具體的ubuntu教程可以參考 http://www.upopen.cn/article/info?id=55938b7ff0e6e0665b000003
三、安裝nodeJs快捷鍵 Ctrl + Alt + T 打開shell終端,
1、打開Nodejs站點 https://nodejs.org/download/,下載linux下對應(yīng)的.gz文件。也可以拷貝下載地址后,
在shell里執(zhí)行 wget https://nodejs.org/dist/v0.12.5/node-v0.12.5-linux-x64.tar.gz。
解釋:wget :下載后面路徑指定的文件
2、下載后默認在Downloads文件里,我們將壓縮文件放Soft/node 目錄里以便分類管理
shell執(zhí)行 mkdir Soft // mkdir: 創(chuàng)建Soft文件夾
執(zhí)行 cd Downloads //cd: 進入到 Downloads 下載文件目錄
執(zhí)行 cp node-v0.12.5-linux-x64.tar.gz /home/cc/Soft
//cp: 復(fù)制 node..gz到Soft目錄下,注意cc是你的主機名,可通過pwd查看
執(zhí)行cd //進入個人根目錄
執(zhí)行cd Soft/node
執(zhí)行 tar -zxvf node-v0.12.5-linux-x64.tar.gz //tar -zxvf 解壓
執(zhí)行 mv node-v0.12.5-linux-x64.tar.gz node //mv : 修改文件夾名為node
執(zhí)行sudo vi /etc/profile //打開環(huán)境變量配置文件
在最后寫入
javascriptexport PATH="/home/cc/Soft/node/bin:$PATH" export NODE_PATH="/home/cc/Soft/node/lib/node_modules"
// 環(huán)境變量地址參見 node的 pwd
配置成功后重啟
作用:重啟后,可執(zhí)行node -v查看是否安裝成功。
解釋:本部涉及到ubuntu的基本命令操作,都有簡單的解釋
四、創(chuàng)建項目目錄并安裝express等框架包目錄結(jié)構(gòu)
root:項目根目錄
??web:前端服務(wù)
??static:靜態(tài)服務(wù)
??*server:后端服務(wù)
1、執(zhí)行 mkdir -p root/web
作用:創(chuàng)建目錄,所有項目都在root下,前端服務(wù)在web。創(chuàng)建成功后進入web文件夾 執(zhí)行cd root/web
2、執(zhí)行touch package.json
作用:創(chuàng)建 package.json文件,維護nodejs項目的依賴文件
解釋:touch :創(chuàng)建文件
4、執(zhí)行 vi package.json
作用:用系統(tǒng)的VI編輯器打開 package.json文件。用vi作大量的編輯工作是不適合的,我們還是用常規(guī)的編輯器,在桌面打開文件系統(tǒng),進入我們創(chuàng)建的root/web目錄,使用系統(tǒng)默認的gedit編輯器打開package.json
5、通過gedit在package.json寫入
javascript{ ??"name": "myCoolNodejs ", ??"version": "0.0.1", ??"private": true, ??"scripts": { ???"start": "node app.js" ??}, ??"dependencies": { //主要是這兩處,設(shè)置引入模塊,后面還會用到其它模塊,另行添加 ???"express": "*", ???"ejs": "*" ??} }
6、執(zhí)行npm install
作用:下載package.json中dependencies 定義的引入模塊
注意:有時限制于網(wǎng)絡(luò)等因素npm install會安裝不成功,可以使用淘寶的npm鏡像,執(zhí)行 npm install -g cnpm --registry=https://registry.npm.taobao.org,安裝cnpm,執(zhí)行cnpm install 。使用同npm。
7、通過桌面打開 web文件夾,創(chuàng)建app.js,并寫入基本配置
javascript /** * 引入依賴模塊 */ var express = require( "express" ), http = require( "http" ), path = require( "path" ); var app = express(), server = http.Server( app ); /** * 設(shè)置 */ app.set( "port", process.env.PORT || 3000 ); //服務(wù)啟動端口 app.set( "views", __dirname + "/views" ); //視圖文件 app.set( "view engine", "ejs" ); //頁面引擎 app.use( "/", express.static( path.join( __dirname, "assets" ))); //靜態(tài)文件路徑 app.get( "/", function( req, res ){ res.render( "index.ejs" ); //請求跳轉(zhuǎn)到 index.ejs文件 }) server.listen( app.get( "port" ), function(){ //監(jiān)聽服務(wù)端口 console.log( "root server listening on port " + app.get( "port" )); } ); server.on( "close", function(){ console.log( "close" ); } );
8、web目錄下創(chuàng)建views文件夾,里面再創(chuàng)建index.ejs文件作為首頁
9、打開index.ejs文件,并寫入
javascript我的nodejs項目 我的nodejs項目
作用:ejs語法同html,優(yōu)勢在于其可以引用一些命令,如接收服務(wù)服務(wù)端定義的數(shù)據(jù)、include模板等
10、在web目錄下創(chuàng)建文件夾 assets/public/imgs,拷入logo.png 圖片
11、shell到web目錄,執(zhí)行 node app.js,在瀏覽器打開 127.0.0.1:3000,即可看到我們在index.ejs里設(shè)置的內(nèi)容,如圖
12、在root在創(chuàng)建 statc文件夾,作為靜態(tài)服務(wù)資源,將目錄web/assets/下的文件,復(fù)制到static里,下面nginx將設(shè)置靜態(tài)文件代理到static服務(wù)器
五、安裝nginx1、shell執(zhí)行sudo apt-get install nginx
作用:安裝nginx服務(wù)器,nginx的使用可參見http://www.upopen.cn/article/info?id=559254e8b269230039000003
2、執(zhí)行sudo vi /etc/nginx/sites-enabled/default
作用:因配置文件需要編輯的命令較少,我們嘗試通過vi 編輯 nginx的配置文件。vi命令操作參見http://www.upopen.cn/article/list?kind=ubuntu
在server里增加
javascript location ~ .(png|jpg|css|js|woff|ttf|less|gif)$ { root /home/jgc/root/static/; #配置以上面結(jié)尾的文件都指向到 /home/cc/root/static。注意/cc/修改為你的計算機名 } location / { proxy_pass http://mynodejs.com; #其它請求轉(zhuǎn)向到 http://mynodejs.com; 該名稱可以自定義 }
在server外面新增
javascript upstream mynodejs.com { //此處名稱與上面proxy_pass名稱一致 server 127.0.0.1:3000; #創(chuàng)建集群,為分攤服務(wù)器壓力,可以創(chuàng)建多個服務(wù)器,做負載均衡,如果我們將web復(fù)制一份為web1,啟動端口改為3001,將其啟動后,此處可以再增加一條配置 server 127.0.0.1: 3001 # 這樣訪問便可隨機指向3000 及 3001服務(wù),分攤訪問壓力、降低服務(wù)宕機風(fēng)險 }
3、在shell 執(zhí)行 sudo /etc/init.d/nginx start
作用:啟動nginx服務(wù)
4、此時訪問127.0.0.1也打開了和 3000一樣的頁面,不同在于其靜態(tài)資源是從static文件夾獲取的,可以通過刪除web中的assets文件測試。我們后續(xù)靜態(tài)文件都在statc里編輯,發(fā)布時static和web放在不同的服務(wù)器上,即實現(xiàn)了資源分離,為CDN做準(zhǔn)備,
5、執(zhí)行sudo vi /etc/hosts
作用:打開本地host映射文件,新增一條 127.0.0.1 www.mynodejs.com。保存后,瀏覽器訪問 www.mynodejs.com。
六、總結(jié)本節(jié)我們使用、開發(fā)了如下功能
1、ubuntu的安裝和使用
2、nodejs的安裝 及 模塊安裝
3、nodejs文件的簡單配置和啟動,項目目錄的劃分
4、nginx安裝、簡單配置 及 啟動 [ 反向代理及集群 ]
如果你原本只是一個單純寫html/css/js的前端開發(fā)員,相信這節(jié)是可以學(xué)到相當(dāng)多的新知識,下節(jié),我們將主要在nodejs及 mongo這一塊,并按實際項目使用創(chuàng)建項目架構(gòu)。
有不明或錯誤,歡迎加群討論,謝謝。
我的技術(shù)新Q群:435485569 上一篇:前后端分離項目實踐分析 下一篇:公司項目NODEJS實踐0.2[ express, ajax.. ]文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/39164.html
摘要:為確保系統(tǒng)里面沒有自帶的軟件的殘留,我們要清除一下舊版本的,雖然新系統(tǒng)一般都不會有就是了。更新軟件包緩存。 showImg(https://segmentfault.com/img/remote/1460000015914895?w=1240&h=819); 小劇場 測試:褲襠你這頁面刷新就白屏啊,怎么了啊,而且你看這 network,怎么這些 js 這么大啊,很耗流量而且加載速度還很...
摘要:前言之前做的幾個項目都托管在阿里云服務(wù)器,但是最近要到期了。環(huán)境部署折騰了一天,其中也遇到幾個坑。項目遷移歷時一天,兩臺服務(wù)器的系統(tǒng)都是位。 前言 之前做的幾個項目都托管在阿里云服務(wù)器,但是最近要到期了。想著到底要不要續(xù)期,畢竟100/月。后面看著阿里云有個活動,800/三年。果斷買下。環(huán)境部署折騰了一天,其中也遇到幾個坑。 目錄 一、安裝環(huán)境 1.1 安裝NodeJS環(huán)境 ...
摘要:前言之前做的幾個項目都托管在阿里云服務(wù)器,但是最近要到期了。環(huán)境部署折騰了一天,其中也遇到幾個坑。項目遷移歷時一天,兩臺服務(wù)器的系統(tǒng)都是位。 前言 之前做的幾個項目都托管在阿里云服務(wù)器,但是最近要到期了。想著到底要不要續(xù)期,畢竟100/月。后面看著阿里云有個活動,800/三年。果斷買下。環(huán)境部署折騰了一天,其中也遇到幾個坑。 目錄 一、安裝環(huán)境 1.1 安裝NodeJS環(huán)境 ...
摘要:安裝更新軟件源安裝但是這個版本是只能使用查看無效安裝安裝模塊用這個模塊升級一定要加升級到最新版此時可以用查看版本安裝安裝開發(fā)庫下載安裝包解壓安裝包進入文件將安裝到目錄下目錄自 nodejs安裝 apt update --更新軟件源 apt install nodejs --安裝nodejs,但是這個版本是4.2.6(只能使用nodejs -v 查看,node 無效) apt i...
閱讀 2593·2023-04-26 00:56
閱讀 2037·2021-10-25 09:46
閱讀 1276·2019-10-29 15:13
閱讀 839·2019-08-30 15:54
閱讀 2224·2019-08-29 17:10
閱讀 2641·2019-08-29 15:43
閱讀 517·2019-08-29 15:28
閱讀 3058·2019-08-29 13:24