Node iTrip PC酒店前后端分離重構(gòu)(Express+Ejs+Webpack+ES6)

原先的iTrip網(wǎng)站是用jsp開發(fā)的,每次改個小小的需求驱显,哪怕是一個小小的樣式,也調(diào)的很惱火瞳抓,還需要麻煩后端小哥幫我調(diào)試埃疫。 吃夠了jsp的苦,在我的觀念中孩哑,能不用jsp就不用了栓霜,這次酒店改版需求,準(zhǔn)備用node分離出來横蜒,這樣后端小哥就闊以給我提供接口就妥妥噠了胳蛮。

目錄結(jié)構(gòu)###

目錄結(jié)構(gòu)
  • 項目生成,使用express-generator
    1. 全局安裝npm install express-generator -g
    2. express [你的項目名稱]
    3. npm start 就闊以啟動node服務(wù)
  • 改造
    1. 用ejs替換默認(rèn)使用的jade模板丛晌,npm i ejs --save
    app.engine('.html', ejs.__express);
    app.set('view engine', 'html');
    2. 修改靜態(tài)資源為static下的dist
    app.use(express.static(path.join(__dirname, 'static/dist')));
    3. 將路由踢出來放在routes中仅炊,并在app.js中引用
    require('./routes')(app);
    route下index.js內(nèi)容
    module.exports = function(app){
    app.use('/hotel', require('./hotel'));
    app.use('/', require('./home'));
    }
    4.mod/config
    module.exports = {
    hostname: "",
    apiServer,//內(nèi)網(wǎng)
    activityServer: ,
    path:,//頁面跳轉(zhuǎn)地址 || 數(shù)據(jù)訪問接口地址
    pic:,//圖片地址
    ugly:false,//壓縮代碼 加上hash值
    publicPath://打包靜態(tài)資源路徑
    }
    5.mod/request http.request封裝 用到了promise.all執(zhí)行多個操作,避免多個回調(diào)函數(shù)的嵌套(eventproxy可控制并發(fā))
    Promise.all(fetchPageUrl) .then(function(Pages) {
    console.log("sucess")
    callback && callback(Pages);
    }).catch(function(e){
    console.log("error")
    error && error(e);
    })
  • 靜態(tài)資源
    靜態(tài)資源在static目錄澎蛛。
    dist是經(jīng)過webpack編譯后的輸出目錄
    src是是開發(fā)目錄
    webpack.config.js webpack的配置文件抚垄,使用webpack編譯靜態(tài)資源使用到的插件
    1.編譯ES6語法的babel
    2. extract-text-webpack-plugin css單獨打包
    new ExtractTextPlugin("assets/css/[name]"+hash+".css")
    3. glob 拆分文件路徑
    var getEntry = function(url,cut) {
    var entry = {};
    glob.sync(url).forEach(function (name) {
    var key = "",value = "";
    var str = name.split(cut)[1];
    key = str.substring(1,str.lastIndexOf('.'));
    value = __dirname + name.substring(1);
    if(key != "" && key.indexOf(".") == -1 ){
    entry[key] = value;
    }
    });
    return entry;
    }
    4.html-webpack-plugin 單獨打包html

使用的技術(shù)棧###

  1. express
  2. ejs
  3. webpack
  4. es6

遺留問題###

  1. 在webpack.config.js中輸入設(shè)置publicPath設(shè)置為<%=conf.publicPath%> 這樣自動編譯的js和css路徑前可以帶著<%=conf.publicPath%> 根據(jù)發(fā)布不同環(huán)境就能設(shè)置publicPath,但是CSS中的圖片資源本人意愿想保持相對路徑谋逻,然后也會加上<%=conf.publicPath%>呆馁,然后傻白甜css并不認(rèn)識這個是什么,但是publicPath不能設(shè)置多個毁兆。目前解決辦法是在將config.js中的publicPath配置成線上cdn的域名訪問路徑浙滤, 用ugly來判斷,當(dāng)ugly為true時气堕,將靜態(tài)資源CSS和js打包纺腊,已經(jīng)將publicPath設(shè)置成線上環(huán)境畔咧。當(dāng)ugly為false是,就是準(zhǔn)備來發(fā)預(yù)發(fā)布環(huán)境或者測試環(huán)境的摹菠,不需要打包壓縮靜態(tài)資源也不用考慮緩存盒卸,但是問題又來了,這樣預(yù)發(fā)布測試完成后需要發(fā)布線上次氨,還需要我本地手動的將ugly改成true打包蔽介,總是感覺好不科學(xué)啊。
  2. node訪問的是java的接口煮寡,兩個都放在一個服務(wù)器上虹蓄,在node中獲取數(shù)據(jù)使用域名的方式,就需要經(jīng)過域名解析找到服務(wù)器幸撕,相當(dāng)于出去繞了一圈發(fā)現(xiàn)就在一個地方薇组,浪費資源,目前的做法是請求數(shù)據(jù)的時候直接使用內(nèi)網(wǎng)IP坐儿,在請求的header中將HOST改成需要的域名律胀,但是這樣的局限性是沒有做負(fù)載均衡。知識不夠用啦(≧▽≦)/

后期會繼續(xù)改進(jìn)問題

該文章僅僅是記錄自己開發(fā)的一個過程貌矿,以下是參照學(xué)習(xí)的網(wǎng)址炭菌,謝謝這些同學(xué)的熱心分享,給了我很大的啟發(fā)
[feeiluuo的博客+express+webpack+react搭建項目]

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末逛漫,一起剝皮案震驚了整個濱河市黑低,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌酌毡,老刑警劉巖克握,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異枷踏,居然都是意外死亡菩暗,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進(jìn)店門旭蠕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來勋眯,“玉大人,你說我怎么就攤上這事下梢】吞#” “怎么了?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵孽江,是天一觀的道長讶坯。 經(jīng)常有香客問我,道長岗屏,這世上最難降的妖魔是什么辆琅? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任漱办,我火速辦了婚禮,結(jié)果婚禮上婉烟,老公的妹妹穿的比我還像新娘娩井。我一直安慰自己,他們只是感情好似袁,可當(dāng)我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布洞辣。 她就那樣靜靜地躺著,像睡著了一般昙衅。 火紅的嫁衣襯著肌膚如雪扬霜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天而涉,我揣著相機(jī)與錄音著瓶,去河邊找鬼。 笑死啼县,一個胖子當(dāng)著我的面吹牛材原,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播季眷,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼余蟹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了瘟裸?” 一聲冷哼從身側(cè)響起客叉,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤诵竭,失蹤者是張志新(化名)和其女友劉穎话告,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體卵慰,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡沙郭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了裳朋。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片病线。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖鲤嫡,靈堂內(nèi)的尸體忽然破棺而出送挑,到底是詐尸還是另有隱情,我是刑警寧澤暖眼,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布惕耕,位于F島的核電站,受9級特大地震影響诫肠,放射性物質(zhì)發(fā)生泄漏司澎。R本人自食惡果不足惜欺缘,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望挤安。 院中可真熱鬧谚殊,春花似錦、人聲如沸蛤铜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽昂羡。三九已至絮记,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間虐先,已是汗流浹背怨愤。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留蛹批,地道東北人撰洗。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像腐芍,于是被迫代替她去往敵國和親差导。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內(nèi)容

  • GitChat技術(shù)雜談 前言 本文較長猪勇,為了節(jié)省你的閱讀時間寞宫,在文前列寫作思路如下: 什么是 webpack伦忠,它要...
    蕭玄辭閱讀 12,679評論 7 110
  • webpack 介紹 webpack 是什么 為什么引入新的打包工具 webpack 核心思想 webpack 安...
    yxsGert閱讀 6,458評論 2 71
  • 寫在開頭 先說說為什么要寫這篇文章, 最初的原因是組里的小朋友們看了webpack文檔后, 表情都是這樣的: (摘...
    Lefter閱讀 5,279評論 4 31
  • 淮陰行五首簇簇淮陰市,竹樓緣岸上。好日起檣竿射亏,烏飛驚五兩琢唾。今日轉(zhuǎn)船頭寡壮,金烏指西北生闲。煙波與春草,千里同一色掀泳。船頭大銅...
    拉拉藤halalateng閱讀 482評論 0 1
  • 今天周四雪隧、三次滴滴、兩頓飯员舵、 今日跑步10+5脑沿、坐車行程52公里 12點前、抵達(dá)會場马僻、簽到 活動+掌柜攻略+勺子課...
    鵬城穆羽閱讀 105評論 0 1