Node.js 蠶食計划(四)—— Express + SQL Server 搭建電影網站


前段時間在慕課網上看了 scott 大神的《node+mongodb建站攻略》課程,按照自己的思路做了一遍,發博客記錄一下

 

一、項目介紹

這個項目是一個簡單的電影網站,由首頁、詳情頁、評論列表三個頁面構成

其中首頁展示所有電影;詳情頁展示指定電影的詳細信息,並具備提交評論的功能;評論頁展示所有的評論信息(原計划是放在后台管理里面的,后來懶癌發作,就不做后台了)

 

效果如下:

 

項目使用 SQL Server 2008 做數據庫(電腦上有現成的),Express 框架搭建服務,前端頁面都是通過 jade 模板引擎生成,為了少寫點 css 就引入了 Bootstrap (懶...)

GitHub 地址:https://github.com/wisewrong/node-test

網站鏈接:http://www.wisewrong.com/

歡迎拍磚~

 

二、配置路由

首先使用 express 創建一個項目

express node-movie

 

因為使用 SQL Server 作為數據庫,所以需要引入 mssql 模塊

然后還需要引入 bootstrap 和 jquery,所以在 package.json 中添加這幾個字段

然后 npm install 安裝依賴項

 

在 app.js 中能找到這樣的一段代碼

這里將 views 目錄設置為視圖目錄,用來存放靜態頁面,並且只識別 .jade 類型的文件

如果直接使用 .html 文件,就需要把第二行代碼改為

app.set('view engine', 'html');

但是通過模板引擎,在后端渲染頁面的效率更高

常用的模板引擎有 ejs 和 jade,通過 Express 搭建的項目會默認使用 jade,所以這里我們也使用 jade 寫模板

// jade 因為商標沖突,已經改名為 pug,但是 express 默認依賴還沒改名,就先繼續用 jade 吧

如果還不熟悉 jade 的語法,可以看一看這篇文章學習一下  https://segmentfault.com/a/1190000000357534

 

我一共寫了這五個模板,其中 error.jade 是 404 頁面,layout.jade 是基本結構,包含 header 和 footer

index.jade 是首頁,detail.jade 是詳情頁,list.jade 是評論列表

 

上一篇博客中提到,如果需要引入 css 或者 js,一般是css 和 js 文件拷貝到 public 目錄下,然后在頁面中引入

項目中需要引入 bootstrap,如果以這種方式引入,還得去 node_modules 目錄下找到對應的文件

所以我在 app.js 中添加了這一行代碼

app.use('/lib', express.static(path.join(__dirname, 'node_modules')));

這樣在 layout.jade 中引入的依賴文件的時候,就可以這么寫

 

頁面內容可以先忽略,先把路由給配置好

在 routes 目錄下創建三個頁面對應的 js 文件

 

然后在 app.js 中引入

在 app.js 中配置路由結點

然后在瀏覽器中打開項目,就能正確的渲染頁面了

 

三、創建數據

熟悉 SQL Server 的小伙伴可以跳過這一節,這部分只是介紹如何在 SQL Server 中創建簡單的數據

 

具體的頁面開發不再贅述,熟悉了 jade 的語法之后,寫起來還是很順手的

在開發頁面的時候,頁面上的數據可以先寫死,以方便查看頁面效果

頁面開發完成之后,再把數據挪到數據庫里面

 

在 SQL Server 中創建數據並不復雜,首先打開 SQL Server,連接本地服務器,創建一個登錄名

 

然后創建一個數據庫

 

展開剛才新建的數據庫,新建表

將 id 設為唯一標識,不可為 null,其他字段只設定數據類型即可

編輯完成后 CTRL+S 保存並命名(記住這個表名)

然后選擇剛才創建的表,右鍵 “編輯前200行”,然后錄入數據

 

四、連接數據庫

以首頁為例,在連接數據庫之前,頁面上需要這些參數:

為了獲取到 movies,需要連接數據庫,首先在 index.js 里面引入 mssql 模塊

關於 mssql 的詳細信息可以看這里(英文)https://www.npmjs.com/package/mssql

 

然后創建配置項:

 

連接數據庫

const sql = require('mssql') /* GET home page. */ router.get('/', function(req, res, next) { sql.connect(config).then(() => { // 插入SQL語句 
     return sql.query`select * from mytable` }).then(result => { res.render('index', { title: 'WiseWrong', movies: result.recordset //查詢結果
 }); sql.close(); // 斷開數據庫的連接,很關鍵
  }).catch(err => { res.render('error'); console.log('出錯了 ', err); }) sql.on('error', err => { res.render('error'); console.log('出錯了 ', err); }) });

上面的代碼是直接寫在 index.js 里面了,如果每個頁面都寫一套,肯定會有大量的重復性代碼,所以一定得封裝一下

 

如果是提交表單,只需要把接口地址改一改,然后處理數據,編寫SQL就行

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM