成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

【實(shí)戰(zhàn)】用 express+MongoDB 搭建一個(gè)完整的前端項(xiàng)目

Steve_Wang_ / 2160人閱讀

摘要:前言要做一個(gè)全沾的工程師,對(duì)于后端和數(shù)據(jù)庫(kù)來(lái)說(shuō),即使不認(rèn)識(shí)也要見(jiàn)個(gè)面的。基本了解的概念就好,主要是安裝上數(shù)據(jù)庫(kù),并進(jìn)行簡(jiǎn)單的增刪操作。

前言:要做一個(gè)全沾的工程師,對(duì)于后端和數(shù)據(jù)庫(kù)來(lái)說(shuō),即使不認(rèn)識(shí)也要見(jiàn)個(gè)面的。本文給的例子很簡(jiǎn)單,也貼出來(lái)源碼,只要一步步下來(lái),就可以跑起來(lái)啦~~~

思考一個(gè)需求:做一個(gè)登錄頁(yè)面,自己搭建服務(wù)和數(shù)據(jù)庫(kù),將用戶輸入的登錄信息保存到數(shù)據(jù)庫(kù)
如何完成呢:首先選擇一個(gè)應(yīng)用框架,無(wú)論是 express、koa、egg 都可以;然后是數(shù)據(jù)庫(kù)選擇,MySQL、MongoDB 都可以,Node.js 都支持連接;最后是插件和中間件的選擇,將應(yīng)用于數(shù)據(jù)庫(kù)連接起來(lái)... 這是大致的思路,那本文以 express+MongoDB 為例建一個(gè)簡(jiǎn)單的程序,完成提出的需求。
數(shù)據(jù)庫(kù)準(zhǔn)備:MongoDB與可視化工具adminMongo的安裝、啟動(dòng)與連接

一、MongoDB 數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)選擇 MongoDB 是因?yàn)槠浣Y(jié)構(gòu)與 JSON 數(shù)據(jù)格式很像?;玖私?MongoDB 的概念就好,主要是安裝上數(shù)據(jù)庫(kù),并進(jìn)行簡(jiǎn)單的增刪操作。
SQL 與 MongoDB

更多學(xué)習(xí):http://www.runoob.com/mongodb/

安裝并運(yùn)行

更詳細(xì)的過(guò)程參考:MongoDB與可視化工具adminMongo的安裝、啟動(dòng)與連接

下載:MongoDB網(wǎng)址 https://www.mongodb.com/downl...

配置:進(jìn)入解壓后的目錄,為MongoDB添加默認(rèn)的/data/db數(shù)據(jù)庫(kù)存儲(chǔ)目錄 $ mkdir data/db

啟動(dòng):進(jìn)入bin目錄下,啟動(dòng) mongodb 數(shù)據(jù)庫(kù)服務(wù)器 $ sudo ./mongod

訪問(wèn):再通過(guò)localhost訪問(wèn)本地?cái)?shù)據(jù)庫(kù)$ ./mongo

一些常用的命令:
數(shù)據(jù)庫(kù):show dbs ;use mytest ; db.dropDatabase()
集合:show collections ; db.createCollection("mycollection") ; db.mycollection.drop()
文檔:db.mycollection.find() ; db.mycollection.insert({name:"xxx"}) ; db.mycollection.remove({"name":"xxx"})

二、adminMongo 可視化工具
選擇一款可視化工具,能讓你的數(shù)據(jù)庫(kù)變得清晰,也可以選擇其他的工具,這里安裝的是adminMongo

下載adminMongo

$  git clone https://github.com/mrvautin/adminMongo

安裝并啟動(dòng):

  $  cd adminMongo
  $  npm install
  $  npm start

連接本地?cái)?shù)據(jù)庫(kù):mongodb://127.0.0.1:27017

三、mongoose 數(shù)據(jù)模型
直接用 node.js 也可以連接數(shù)據(jù)庫(kù)進(jìn)行讀寫,但很多插件除了封裝這個(gè)基本功能之外,還提供了很多其他的服務(wù)。對(duì)于 MongoDB,我不會(huì)使用原生 node 去操作,而是選了 mongoose 這個(gè)插件。mongoose 官網(wǎng):  https://mongoosedoc.top/

安裝了 node.js 建一個(gè) test 項(xiàng)目文件夾,初始化 package.json

$  npm init 

安裝 mongoose

$ npm install mongoose  --save-dev

新建一個(gè)js文件,用來(lái)寫 mongoose 代碼

 $  touch mongoose.js

連接數(shù)據(jù)庫(kù)

/* 
  mongoose.js :建立數(shù)據(jù)庫(kù)連接
 */
var mongoose = require("mongoose") // 引入 mongoose
var url = "mongodb://localhost:27017/mytest"; // 本地?cái)?shù)據(jù)庫(kù)地址
mongoose.connect(url)

// connect() 返回一個(gè)狀態(tài)待定(pending)的連接,可以用來(lái)判斷連接成功或失敗
var db = mongoose.connection; 
db.on("error", console.error.bind(console, "connection error:"));
db.once("open", function() {
  console.log("Successful connection to "+url)
});

運(yùn)行$ node mongoose.js 后輸出:
Successful connection to mongodb://localhost:27017/mytest

此時(shí)連接數(shù)據(jù)庫(kù)成功,建立 Schema(Mongoose 定義的相當(dāng)于 collection 集合的概念) ,寫數(shù)據(jù)

/*
  mongoose.js :建立數(shù)據(jù)庫(kù)連接用 mongoose.Schema 插入數(shù)據(jù)
 */
var Schema = mongoose.Schema //schema 都會(huì)映射到一個(gè) MongoDB collection

let user = {
  name:String
}

var userSchema = Schema(user)
var User = mongoose.model("User", userSchema); //將schema編譯為model構(gòu)造函數(shù)

var newUser = new User({name: "yyyyyyyyyyyy"})// Mongoose 會(huì)自動(dòng)找到名稱是 model 名字復(fù)數(shù)形式的 collection
newUser.save()

運(yùn)行$ node mongoose.js 后,可以通過(guò) adminmongo 查看數(shù)據(jù)是否添加成功,也可以通過(guò) terminal 命令查看。

補(bǔ)充說(shuō)明:以下是 mongoose 的所有合法 SchemaTypes:
常見(jiàn)的 String , Number , Date , Buffer , Boolean , Array ,
Mixed: 一個(gè)啥都可以放的 SchemaType,雖然便利,但也會(huì)讓數(shù)據(jù)難以維護(hù),
ObjectId:指定類型為 ObjectId,即“主鍵”,
Decimal128:自定義的Type

四、Express 服務(wù)框架
mongoose 只是幫我們連接數(shù)據(jù)并進(jìn)行讀寫,還需要啟動(dòng)一個(gè)服務(wù)框架,這個(gè)框架封裝了 node 的 http 服務(wù)。

安裝 express

$ npm install express --save-dev

創(chuàng)建 express.js 應(yīng)用Demo,啟動(dòng)服務(wù)接口

/*
 express.js: 引入 express 模塊,設(shè)置路由
*/
var express = require("express")()

express.get("/",function (request, response) { // 路由
  response.send("hello world!") // 傳送HTTP響應(yīng)
})
express.listen(3000) //監(jiān)聽(tīng)3000端口,默認(rèn)localhost: 127.0.0.1 || 0.0.0.0

運(yùn)行$ node express.js 后打開(kāi)瀏覽器輸入 http://localhost:3000/

五、完成一個(gè)表單提交
三四步驟完成后思路會(huì)清晰起來(lái),現(xiàn)在只需要建立一個(gè)表單,提交數(shù)據(jù)到 express 提供的接口,express 接收到請(qǐng)求后通過(guò) mongoose 訪問(wèn)數(shù)據(jù)庫(kù)。

express.js 導(dǎo)入 mongoose 模塊,

/*
  mongoose.js: 導(dǎo)出模塊
 */
module.exports = {mongoose,User}

/*
  express.js: 引入 mongoose
 */
var {mongoose, User} = require("./mongoose")

*支持ES6需要

$  npm install babel-core --save-dev

在express.js中創(chuàng)建一個(gè)請(qǐng)求數(shù)據(jù)的路由/接口

/*
  express.js: 使用 mongoose 建立接口,添加數(shù)據(jù)到 MongoDB
 */    
express.get("/addUser",function (request, response) {
  let data = {
    name: request.query.myinput
  }
  console.log(data)
  var addUser = new User(data)
  addUser.save()
  response.send(JSON.stringify(data))
})

新建一個(gè)html,向 http://127.0.0.1:3000/addUser 發(fā)送 get 請(qǐng)求,提交數(shù)據(jù)。


隨便輸入:

運(yùn)行$ node express.js 打開(kāi) index.html 文件:

成功存儲(chǔ):

在 adminMongo 中查看:

六、模板引擎與視圖渲染
問(wèn)題:html請(qǐng)求為什么帶url和端口? 如何將html也放在 http://127.0.0.1:3000/  地址下進(jìn)行訪問(wèn)?

所有的應(yīng)用框架都需要使用引擎才能將視圖渲染輸出為HTML!express 官網(wǎng)上默認(rèn)模板引擎 jade,express 4+ 用 ejs,也可以自定義模板引擎進(jìn)行視圖渲染

安裝模板引擎 ejs

$  npm i ejs --save-dev

配置模板引擎,使用我們習(xí)慣的 html 類型的模板代替 ejs

/*
 express.js: 配置引擎
*/
express.set("views", "./views"); // 添加視圖路徑
express.engine("html", require("ejs").renderFile); // 將EJS模板映射至".html"文件
express.set("view engine", "html"); // 設(shè)置視圖引擎

配置路由與渲染的模板

/*
 express.js: 配置引擎
*/
express.get("/view", function (request, response) {
  response.render("test")
})

新建 views 文件夾與 test.html

/*
 views/test.html
*/

使用了模板引擎,可以直接看到我!

隨便輸入:

打開(kāi)瀏覽器訪問(wèn):http://127.0.0.1:3000/view

注意此時(shí)數(shù)據(jù)的提交路徑是 “/addUser” ,沒(méi)有地址和端口號(hào),數(shù)據(jù)也可以提交。

總結(jié)

整體的目錄結(jié)構(gòu)如下:

整個(gè)流程下來(lái),可以直接復(fù)制代碼跑一下,但要知道每個(gè)步驟需要做什么,最重要的是思路,其他的都是工具。


加油哦~ 少年!

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/19322.html

相關(guān)文章

  • NodeJs+Express+Mysql + Vuejs 項(xiàng)目實(shí)戰(zhàn) - 大綱

    摘要:多一個(gè)技能多一條出路,祝你在自學(xué)道路上越走越好,掌握自己的核心技能,不只是優(yōu)秀,還要成為不可替代的人 NodeJs+Express+Mysql + Vuejs 項(xiàng)目實(shí)戰(zhàn) 最近準(zhǔn)備寫一系列文章,全面講述如何基于NodeJs + Express + Mysql + Vuejs 從零開(kāi)發(fā)前后端完全分離項(xiàng)目; 文筆及技術(shù)可能在某些方面欠佳,請(qǐng)您指正,共同學(xué)習(xí)進(jìn)步 前端:Vuejs全家桶 后端:...

    noONE 評(píng)論0 收藏0
  • MEVN 架構(gòu)(MongoDB + Express + Vue + NODEJS)搭建

    摘要:連接數(shù)據(jù)庫(kù)如果不自己創(chuàng)建默認(rèn)數(shù)據(jù)庫(kù)會(huì)自動(dòng)生成地址跟第一步的地址對(duì)應(yīng)。現(xiàn)在回過(guò)頭來(lái)看里面的入口文件最后,我們?cè)跒g覽器輸入,就會(huì)跳到。到此為止,我們就完成了整個(gè)前后端各自開(kāi)發(fā)到正式部署的流程。 一個(gè)完整的網(wǎng)站服務(wù)架構(gòu)包括:1、web frame ---這里應(yīng)用express框架2、web server ---這里應(yīng)用nodejs3、Database ---這里應(yīng)用monggoDB4、...

    Lsnsh 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<