亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

Steve_Wang_ / 2258人閱讀

摘要:前言要做一個全沾的工程師,對于后端和數(shù)據(jù)庫來說,即使不認識也要見個面的?;玖私獾母拍罹秃茫饕前惭b上數(shù)據(jù)庫,并進行簡單的增刪操作。

前言:要做一個全沾的工程師,對于后端和數(shù)據(jù)庫來說,即使不認識也要見個面的。本文給的例子很簡單,也貼出來源碼,只要一步步下來,就可以跑起來啦~~~

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

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

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

安裝并運行

更詳細的過程參考:MongoDB與可視化工具adminMongo的安裝、啟動與連接

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

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

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

訪問:再通過localhost訪問本地數(shù)據(jù)庫$ ./mongo

一些常用的命令:
數(shù)據(jù)庫: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ù)庫變得清晰,也可以選擇其他的工具,這里安裝的是adminMongo

下載adminMongo

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

安裝并啟動:

  $  cd adminMongo
  $  npm install
  $  npm start

連接本地數(shù)據(jù)庫:mongodb://127.0.0.1:27017

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

安裝了 node.js 建一個 test 項目文件夾,初始化 package.json

$  npm init 

安裝 mongoose

$ npm install mongoose  --save-dev

新建一個js文件,用來寫 mongoose 代碼

 $  touch mongoose.js

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

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

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

運行$ node mongoose.js 后輸出:
Successful connection to mongodb://localhost:27017/mytest

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

/*
  mongoose.js :建立數(shù)據(jù)庫連接用 mongoose.Schema 插入數(shù)據(jù)
 */
var Schema = mongoose.Schema //schema 都會映射到一個 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 會自動找到名稱是 model 名字復(fù)數(shù)形式的 collection
newUser.save()

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

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

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

安裝 express

$ npm install express --save-dev

創(chuàng)建 express.js 應(yīng)用Demo,啟動服務(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)聽3000端口,默認localhost: 127.0.0.1 || 0.0.0.0

運行$ node express.js 后打開瀏覽器輸入 http://localhost:3000/

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

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)建一個請求數(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))
})

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


隨便輸入:

運行$ node express.js 打開 index.html 文件:

成功存儲:

在 adminMongo 中查看:

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

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

安裝模板引擎 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
*/

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

隨便輸入:

打開瀏覽器訪問:http://127.0.0.1:3000/view

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

總結(jié)

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

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


加油哦~ 少年!

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

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/19322.html

相關(guān)文章

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

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

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

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

    Lsnsh 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<