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

資訊專(zhuān)欄INFORMATION COLUMN

Sails+MVC+Mysql+Node+學(xué)習(xí)筆記一

W4n9Hu1 / 1711人閱讀

摘要:業(yè)務(wù)邏輯處理層,采用的的語(yǔ)法編寫(xiě)。配置層這層里面有和兩層,然后和一些。所以遇到這個(gè)情況就檢查是不是鏈接配的有問(wèn)題或者的服務(wù)已關(guān)閉。在瀏覽器輸入查出來(lái)的結(jié)果如圖所示這條數(shù)據(jù)手動(dòng)添加的,這樣一個(gè)很簡(jiǎn)單的算完成了。官網(wǎng)官網(wǎng)阮一峰模塊

項(xiàng)目構(gòu)建

安裝Node就不多說(shuō)了,

1.sails安裝與項(xiàng)目新建運(yùn)行
npm install sails -g//全局安裝

sails new project-name//新建項(xiàng)目

cd project-name //進(jìn)入剛才新建項(xiàng)目的目錄

sails lift //運(yùn)行項(xiàng)目,運(yùn)行原理也是直接在項(xiàng)目目錄路徑下使用node app.js
npm install sails-mysql --save //--save 把安裝的模塊寫(xiě)進(jìn)package.json

到了這一步,環(huán)境算是搭建完成。

2.目錄結(jié)構(gòu)介紹

2.1api

在api目錄下,有著controller、hooks、models、policies、responses和services幾個(gè)目錄

controller目錄下存放的就是頁(yè)面與后臺(tái)服務(wù)器通訊的接口,如果對(duì)應(yīng)的java,那么就是java里面的Action層或者使用Spring
MVC ,那么也是對(duì)應(yīng)的Controller,里面存放的就是接口。

models,數(shù)據(jù)模型層,也就是實(shí)體層,對(duì)應(yīng)java里面的entity。

policies(策略),在controller之前執(zhí)行,主要工作是session認(rèn)證,如果session是認(rèn)證通過(guò)了,那么就可以進(jìn)入下一個(gè)策略或者如果是最后一個(gè)策略,那么就可以進(jìn)入controller了,個(gè)人感覺(jué)像是java里的過(guò)濾器或者分發(fā)器。

responses,自定義的響應(yīng)。舉個(gè)例子,一般從前臺(tái)發(fā)出一個(gè)請(qǐng)求后,如果經(jīng)過(guò)了服務(wù)器,那么都會(huì)給客戶(hù)端返回一個(gè)結(jié)果,除了本身自帶的響應(yīng)方式,也可以采用自定義的響應(yīng),比如返回一個(gè)404頁(yè)面,返回500頁(yè)面或者返回字符串等等。

services,業(yè)務(wù)邏輯處理層,采用es6的Module的語(yǔ)法編寫(xiě)。

2.2assets靜態(tài)資源層

在這層目錄里面有,js,image,styles,templates,這個(gè)目錄里面主要放的就是靜態(tài)資源,沒(méi)什么說(shuō)的。

2.3config配置層

這層里面有env和locales兩層,然后和一些js。

env中有一個(gè)development.js里面的注釋是如下:

開(kāi)發(fā)環(huán)境配置,這個(gè)文件夾里面包含了開(kāi)發(fā)團(tuán)隊(duì)共享的一些配置,比如api的名稱(chēng),數(shù)據(jù)庫(kù)的密碼,如果你在你的Sails應(yīng)用中使用了版本控制器,這個(gè)文件也會(huì)提交到你的資源倉(cāng)庫(kù)里面,除非你在gitignore中添加了一個(gè)信息,表明這個(gè)文件是私有的或不公開(kāi)的。

env中的production.js里的注釋如下:
項(xiàng)目環(huán)境配置,與development類(lèi)似,但是從注釋中看到要多一些東西,比如配置端口的和日志的

2.4task任務(wù)層

這層里面主要放置的是grunt的任務(wù),

2.5views層

這一層主要放置的是作為展示的前臺(tái)頁(yè)面,一種情況是使用node做單純的后臺(tái)服務(wù)器,不處理前臺(tái)業(yè)務(wù),而另外一種情況是采用模塊化的思想,對(duì)結(jié)構(gòu)進(jìn)行分層,達(dá)到MVC的合理實(shí)現(xiàn),本來(lái)Sails就是一個(gè)MVC框架所以第一種情況還是不太會(huì)出現(xiàn)。

3開(kāi)始搭建項(xiàng)目

整體流程:新建數(shù)據(jù)庫(kù) -> 新建表 -> 建實(shí)體 -> 在sails中搭建環(huán)境 -> 編碼 -> 得到結(jié)果

3.1新建數(shù)據(jù)庫(kù)和表

建好mysql數(shù)據(jù)庫(kù),然后新建表,新建表有兩種新建方式,一種是自動(dòng)建表,另外一種是手動(dòng)建表。手動(dòng)建表我就不多說(shuō)了。

3.2鏈接數(shù)據(jù)庫(kù)

設(shè)計(jì)的主要文件是config里面的connections.js,里面存放的是鏈接數(shù)據(jù)庫(kù)的配置,這里的配置不光只能配置這么一個(gè)鏈接,可以多個(gè)不同或相同數(shù)據(jù)庫(kù),代碼如下:

mySqlServer: {
      adapter: "sails-mysql",
      host: "localhost",
      port: 3306,
      user: "root",
      password: "root",
      database: "myproject",
      charset:"utf8"
    }

然后下一個(gè)重要文件就是models.js里面的文件,里面存放的是數(shù)據(jù)庫(kù)使用的那個(gè)鏈接,以上面的名字作為鍵值,代碼如下:

connection: "mySqlServer",
  migrate: "alter"

connection :表示我是用的就是mySqlServer這個(gè)鏈接
migrate:alter修改,這意味這對(duì)這個(gè)數(shù)據(jù)在運(yùn)行項(xiàng)目時(shí)時(shí)會(huì)根據(jù)你實(shí)體的設(shè)計(jì)修改數(shù)據(jù)中的表結(jié)構(gòu)的。而safe就是要手動(dòng)建表,那么這個(gè)時(shí)候你得把實(shí)體與數(shù)據(jù)庫(kù)對(duì)應(yīng)起來(lái)之不過(guò)有點(diǎn)麻煩,對(duì)于初學(xué)者來(lái)說(shuō)還是把實(shí)體與數(shù)據(jù)庫(kù)手動(dòng)對(duì)應(yīng)起來(lái)嗎,因?yàn)橹筮€會(huì)有復(fù)雜的表間關(guān)系,比如說(shuō)一對(duì)一、一對(duì)多、多對(duì)多等。

3.3建立數(shù)據(jù)模型

回到api層理的models里面,在里面新建好js文件,值得注意的是文件名稱(chēng),這個(gè)名稱(chēng)直接關(guān)系到你之后的查詢(xún),刪除等操作,我新建的operator的代碼如下:

module.exports = {
  attributes:{
    username:{
      type:"string",
      required:true
    },
    password:{
      type:"string",
      required:true
    }
  }
}

除了這兩個(gè)字段,sails會(huì)自動(dòng)給你在表里面新建三個(gè)字段,id,createdAt,updatedAt,新建好數(shù)據(jù)的表結(jié)構(gòu)如下圖所示:

3.4測(cè)試數(shù)據(jù)鏈接

執(zhí)行代碼在項(xiàng)目路徑下進(jìn)入CMD命令窗口
node app.js或者sails lift,執(zhí)行完之后如果沒(méi)有報(bào)錯(cuò)且新建好數(shù)據(jù)庫(kù)那么就沒(méi)什么問(wèn)題了。
那么在這個(gè)階段容易碰到的問(wèn)題有那些呢:

     Consistency violation: A model (`operator`) references a datastore which cannot be found (`otherSql`). 

這句話(huà)的意思是,operator這個(gè)數(shù)據(jù)模型在otherSql這個(gè)鏈接中找不到。所以遇到這個(gè)情況就檢查是不是鏈接配的有問(wèn)題或者M(jìn)ysql的服務(wù)已關(guān)閉。

3.5controller的配置

controller配置里面的是交互的接口,代碼如下:

module.exports = {
  findOne:function (req,res) {
    var id = req.param("id");
    if(id){
      console.log(id);
      operator.find(id, function operatorFound(err, entity) {
        res.send(entity,200);
      });
    }else{
      console.log("是啊比");
      res.send("失敗",500);
    }
  }
};

一個(gè)簡(jiǎn)單的查詢(xún)就這么完成了,寫(xiě)完成之后就是驗(yàn)證編寫(xiě)的正確性了。在瀏覽器輸入url:

http://localhost:1337/user/findOne?id=1

查出來(lái)的結(jié)果如圖所示:

這條數(shù)據(jù)手動(dòng)添加的,這樣一個(gè)很簡(jiǎn)單的demo算完成了。

4補(bǔ)充

如果想要修改項(xiàng)目訪問(wèn)端口,可在local.js里面添加:port:端口號(hào),項(xiàng)目訪問(wèn)默認(rèn)路徑是user,想要修改的話(huà),可以在route里面修改進(jìn)行訪問(wèn)。
代碼如下:

"/findOne":{
    controller:"UserController",
    action:"findOne"
  }

起哄controller對(duì)應(yīng)的就是controller的文件名(不添加后綴),action:對(duì)應(yīng)的就是里面的方法名。

sails官網(wǎng)

grunt官網(wǎng)

es6-阮一峰-模塊

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

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

相關(guān)文章

  • 為什么使用Sails?

    摘要:原文鏈接為什么使用前言入手半年,從用開(kāi)發(fā)自己的博客到用開(kāi)發(fā)公司項(xiàng)目,深深被震撼了。我不知道官方是否解釋過(guò)為什么要用個(gè)單詞,但以我的理解,的是負(fù)責(zé)指揮每一條客戶(hù)端請(qǐng)求應(yīng)該分配到服務(wù)器端的哪個(gè)去,所以叫藍(lán)圖吧。 原文鏈接:BlueSun | 為什么使用Sails? 前言 入手Node.js半年,從用Express開(kāi)發(fā)自己的博客到用Sails開(kāi)發(fā)公司項(xiàng)目,深深被Sails震撼了。Sails是...

    xi4oh4o 評(píng)論0 收藏0
  • Sails.js 內(nèi)存暴漲 & 源碼分析

    摘要:是下的一個(gè)優(yōu)秀的框架,但是使用后,在流量增長(zhǎng)時(shí),進(jìn)程有時(shí)突然內(nèi)存暴漲保持高占用。如果是內(nèi)存泄露引起的,則需要細(xì)心檢查代碼,確定變量能正?;厥铡C總€(gè)對(duì)象有自己產(chǎn)生的內(nèi)存。譯注但是大對(duì)象內(nèi)存區(qū)本身不是可執(zhí)行的內(nèi)存區(qū)。 Sails.js 是 node 下的一個(gè)優(yōu)秀的 MVC 框架,但是使用 Sails 后,在流量增長(zhǎng)時(shí), node 進(jìn)程有時(shí)突然內(nèi)存暴漲、保持高占用。經(jīng)過(guò)翻閱源碼后,發(fā)現(xiàn)這個(gè)問(wèn)...

    antz 評(píng)論0 收藏0
  • My Toolkit of Node.js

    摘要:它基于格式,在絕大多數(shù)情況下,使用協(xié)議傳輸請(qǐng)求。由它加密的文件可在所有支持的操作系統(tǒng)和處理器上進(jìn)行轉(zhuǎn)移。后話(huà)本文的描述及用語(yǔ),僅基于本人目前的水平而寫(xiě),難免有所局限和措辭不當(dāng)之處。 原文鏈接:BlueSun | My Toolkit of Node.js Cheerio Fast, flexible, and lean implementation of core jQuery des...

    leeon 評(píng)論0 收藏0
  • koa-cola:只需個(gè)react組件,同時(shí)支持單頁(yè)應(yīng)用(SPA)和服務(wù)器渲染(SSR)

    摘要:是一個(gè)基于和的服務(wù)器端和瀏覽器端的的前后端全棧應(yīng)用框架。是的組件,并且會(huì)進(jìn)行數(shù)據(jù)初始化不但可以支持的數(shù)據(jù)初始化,還可以合并和的,使用同一個(gè),和的無(wú)縫結(jié)合。 koa-cola是一個(gè)基于koa和react的服務(wù)器端SSR(server side render)和瀏覽器端的SPA(single page application)的web前后端全棧應(yīng)用框架。 koa-cola使用typescr...

    XGBCCC 評(píng)論0 收藏0
  • node.js中文資料導(dǎo)航

    摘要:中文資料導(dǎo)航官網(wǎng)七牛鏡像深入淺出系列進(jìn)階必讀中文文檔被誤解的編寫(xiě)實(shí)戰(zhàn)系列熱門(mén)模塊排行榜,方便找出你想要的模塊多線(xiàn)程,真正的非阻塞淺析的類(lèi)利用編寫(xiě)異步多線(xiàn)程的實(shí)例中與的區(qū)別管道拒絕服務(wù)漏洞高級(jí)編程業(yè)界新聞看如何評(píng)價(jià)他們的首次嘗鮮程序員如何說(shuō)服 node.js中文資料導(dǎo)航 Node.js HomePage Node官網(wǎng)七牛鏡像 Infoq深入淺出Node.js系列(進(jìn)階必讀) Nod...

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

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

0條評(píng)論

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