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

資訊專欄INFORMATION COLUMN

MEAN.js 文檔

Hydrogen / 520人閱讀

摘要:感謝使用框架本文檔涵蓋構(gòu)建應(yīng)用所需的基礎(chǔ)知識。用于數(shù)據(jù)校驗的組件及相關(guān)文件在此目錄進(jìn)行管理。除了自定義中間件外,還是用了諸多第三方的中間件,它們是五測試我們使用組件對服務(wù)端代碼進(jìn)行測試。識別當(dāng)前導(dǎo)航從已有導(dǎo)航中刪除給定標(biāo)識的導(dǎo)航配置。

本文同步至個人博客 MEAN.js 文檔,轉(zhuǎn)載請注明出處。
Overview

感謝使用 MEAN.js 框架!

本文檔涵蓋構(gòu)建 MEAN 應(yīng)用所需的基礎(chǔ)知識。

在你開始閱讀該文檔之前,我們建議您閱讀 MEAN.js 所使用的技術(shù)棧:

MongoDB

請至 MongoDB 官網(wǎng)獲取 MongoDB 手冊,這對了解什么是 NoSQL 和 MongoDB 大有裨益。

Express

理解 Express MVC 的最優(yōu)方式依然是通過 官網(wǎng),尤其是 Express 入門指南;另外,還可以從 StackOverflow(譯改原鏈接無法使用) 上獲取更多資料。

AngularJS

從 Angular 官網(wǎng) 開始學(xué)習(xí)是個不錯的開始。此外學(xué)習(xí) Thinkster Popular Guide 和 Egghead 視頻教程 也是不錯的開始。

Node.js

通讀 Node.js 官網(wǎng)手冊 及 StackOverflow Thred,可以讓你盡快了解什么是 Node.js 平臺。

當(dāng)閱讀完上述資料后,如果你感覺多這些技術(shù)有了大致了解,那么現(xiàn)在可以繼續(xù)我們的 MEAN.js 學(xué)習(xí)了。

Enjoy & keep us updated,
The MEAN.JS Team.

一 起步

這個章節(jié)會帶你學(xué)習(xí)如何使用 MEAN.js 框架,第一步就是安裝所有依賴和初始化應(yīng)用。

1.1 依賴

在開始前,請先確認(rèn)你是否已在開發(fā)機(jī)器上安裝了下面所有依賴。

git

確認(rèn)是否已在機(jī)器上安裝了 Git 版本控制工具。 OSX 和 Linux 系統(tǒng)一般會默認(rèn)安裝它??梢暂斎胂铝忻畲_認(rèn)是否已安裝:

$ git --version

-- Node.js & npm

下載并安裝 Node.js 和 npm 包管理器,如果你遇到任何問題,您還可以使用 Github Gist 來安裝 node.js。

MongoDB

下載并安裝 MongoDB 數(shù)據(jù)庫,并確保在默認(rèn)端口 (27017) 啟動服務(wù)。

Bower

我們需要使用 Bower 包管理器 對前端代碼進(jìn)行管理,安裝 Bower 需要預(yù)先安裝 Node.js 和 npm,然后使用 npm 執(zhí)行下面的命令進(jìn)行全局安裝 Bower:

$ npm install -g bower

Gulp

我們還會使用 Glup 自動化構(gòu)建工具 來管理開發(fā)組件。安裝 Glup 需要預(yù)先安裝 Node.js 和 npm,然后使用 npm 執(zhí)行下面的命令進(jìn)行全局安裝 Glup:

$ npm install -g glup
Note: Your user might not have the permissions to install package globally, so use a super user or sudo.
1.2 下載 MEAN.js

我們提供有多種方式獲取 MEAN.js 框架。

1.2.1 從 Github 版本庫復(fù)制

使用 Git 直接從 MEAN.js 版本庫復(fù)制:

$ git clone https://github.com/meanjs/mean.git 
1.2.2 下載 MEAN.js 壓縮文件

還可以通過下載最新穩(wěn)定版本的 MEAN.js 壓縮包。使用 wget 命令執(zhí)行下載:

$ wget https://github.com/meanjs/mean/archive/0.5.0.zip -O meanjs.zip; unzip meanjs.zip; rm meanjs.zip

不要忘記將 mean-0.5.0 重命名為你的項目名稱。

1.3 安裝依賴

上面所有的依賴工具安裝完成后,還需簡單的幾步處理就可以開始開發(fā) MEAN 應(yīng)用了。

首先,需要安裝 Node.js 依賴庫。MEAN.js 初始項目中的 package.js 文件列出來所有項目依賴模塊,如果需要了解如何安裝模塊可以閱讀 NPM & Package.json 章節(jié)。

要安裝這些項目依賴需要再次執(zhí)行 npm 命令,僅僅需要運行下面的命令即可:

$ npm install

This command does a few things:
-First it will install the dependencies needed for the application to run.

If you"re running in a development environment, it will then also install development dependencies needed for testing and running your application.

Finally, when the install process is over, npm will initiate a bower installcommand to install all the front-end modules needed for the application.

1.4 使用 Glup 啟動項目

完成所有安裝工作后,就可以使用 Glup 啟動并運行項目,僅需執(zhí)行下面的命令:

$ glup

項目會在 3000 端口執(zhí)行,所以我們可以在瀏覽器輸入 http://localhost:3000 訪問項目。

That"s it! your application should be running by now, to proceed with your development check the other sections in this documentation.

如果在此之前遇到什么問題,可以查閱 「排錯」 章節(jié)了解詳情。

二 排錯

如果遇到各種疑難雜癥請點擊 原文

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

MEANJS 項目的目錄結(jié)構(gòu)如下圖所示:

文件夾為項目的根目錄,你可以給你的項目創(chuàng)建指定的項目名稱作為根目錄名稱。以下是子目錄及其功能說明.

3.1

更目錄包含以下子目錄:

應(yīng)用配置文件列表

應(yīng)用默認(rèn)配置文件列表

一系列用于構(gòu)建和啟動應(yīng)用的文件

包含四個主要模塊及相關(guān)類庫的模塊文件夾

3.2 config 目錄

項目所有的運行時環(huán)境配置文件和輔助函數(shù)文件都放置在 config 目錄中。下面詳細(xì)講解它的構(gòu)成:

3.2.1 config/assets

該目錄用于管理框架的資源文件。當(dāng) MEAN.js 項目運行時,用戶界面需要使用的一系列靜態(tài)資源皆在此管理。靜態(tài)資源包括 images,CSS 樣式表,JavaScript 腳本和視圖(如 html 模版)。

另外,依據(jù)不同的開發(fā)環(huán)境 (NODE_ENV) 將會動態(tài)加載不同環(huán)境的資源管理文件(如: dev, test, prod)。該目錄中的配置是用于告知項目在運行中需要使用的所有靜態(tài)資源以及如何查找相關(guān)文件路徑。

3.2.2 config/env

該目錄用于管理 MEAN.js 項目運行時,提供針對不同開發(fā)環(huán)境(如: local, dev, test, prod)的配置設(shè)置。

3.2.3 config/lib

lib 目錄是各種輔助函數(shù)文件的管理目錄,用于 MEAN.js 使用的各個模塊就放置于此。

目錄中包含提供引導(dǎo)應(yīng)用啟動的組件,創(chuàng)建 express 實例的組件,創(chuàng)建日志服務(wù)的組件,創(chuàng)建 MongoDB 連接實例組件,多文件上傳組件,創(chuàng)建測試用戶數(shù)據(jù)組件及創(chuàng)建 socket 連接服務(wù)的組件等。

3.3 modules 目錄

modules 目錄是 MEAN.js 應(yīng)用的 AngularJS 前端業(yè)務(wù)邏輯模塊的管理目錄。當(dāng)你創(chuàng)建各種前端業(yè)務(wù)邏輯時,每個功能特性建議以獨立命名的文件名作為一個獨立的模塊進(jìn)行管理。正如 AngularJS 開發(fā)指南 描述的那樣, 「你可以將一個功能模塊視作應(yīng)用中對應(yīng)部分的容器」。

MEAN.js 中提供了部分開箱即用的常用模塊,你需要做的是創(chuàng)建自己項目中需要涉及的功能模塊即可。

modules 目錄下的子目錄,以下面的目錄結(jié)構(gòu)進(jìn)行組織管理:

3.3.1 modules/*/client

前端代碼,相關(guān)資源文件和特定的模塊將在此目錄下進(jìn)行管理。

3.3.2 modules/*/server

服務(wù)端代碼,相關(guān)資源文件和特定的模塊將在此目錄下進(jìn)行管理。

3.3.3 modules/*/tests

用于數(shù)據(jù)校驗的組件及相關(guān)文件在此目錄進(jìn)行管理。

3.4 public 目錄

項目中所有前端使用的靜態(tài)資源都放置在這個目錄中。靜態(tài)文件包括構(gòu)建應(yīng)用的資源文件及使用的外部第三方類庫。

public 目錄中包括如下兩個子目錄:

3.4.1 public/lib

public/lib 包含應(yīng)用所使用的外部類庫及由 bower 引入的資源文件。

3.4.2 public/dist

public/dist 用于存放構(gòu)建后的資源文件。例如,生產(chǎn)環(huán)境中所使用壓縮后的腳本文件。

3.5 scripts 目錄

scripts 目錄存放開發(fā),管理和操作項目的腳本文件。

4 Express

每個優(yōu)秀的 Web 應(yīng)用最終都是一個 Web 框架。MEAN.js 使用的是 Express MVC 框架。Express 是這樣介紹的 「Express 是一個簡潔而靈活的 node.js Web應(yīng)用框架, 提供一系列強(qiáng)大特性幫助你創(chuàng)建各種Web應(yīng)用 ...」

Express 的啟動配置在 config/lib/express.js 文件里。本節(jié)我們來聊聊在 MEAN.js 中要如何配置和啟動 Express。

4.1 可配置的屬性 4.1.1 app.locals

在 MEAN.js 里可以使用 app.locals 設(shè)置自定義的變量。變量一經(jīng)設(shè)置即可在整個項目生命周期內(nèi)使用。如果需要在前端代碼使用某個全局變量,這個特性會非常有用,比如 users/sessions 鏈接到服務(wù)器。

4.1.2 res.locals

此外 Express 應(yīng)用還具有存儲響應(yīng)數(shù)據(jù)到本地變量的能力,比如 res.locals 就可以存儲請求數(shù)據(jù)。MEAN.js 就是用了這個特性。Express 中的 res 對象會存儲某個 HTTP 請求的響應(yīng)的數(shù)據(jù)。從 API 文檔中我們可以看出如果需要獲取請求數(shù)據(jù) res.locals 功能會非常有用。

4.2 路由

使用 Express 框架的優(yōu)勢之一就是提供開箱即用的路由功能。在 MEAN.js 中,路由主要處理來自前端的 URL 跳轉(zhuǎn)和處理 HTTP 請求。

一個請求的 URL 通常包括幾個部分:資源定位符,查詢字符串以及片段信息等。

此外,一個 HTTP 請求還包含請求方法。 This is the desired action to be performed on the resource specified by the URL。常用的請求方法包括:GET, POST, PUT 和 DELETE。

請求的 URL 地址和請求方式共同組成一個路由。在 MEAN.js 中會在路由配置里定義處理不同請求的方法。為了實現(xiàn)路由功能,我么直接使用 Express 的路由功能。在 Express 官網(wǎng)的 路由使用 中有講解如何定義一個路由:

app.METHOD(PATH, HANDLER)

app 是一個 Express 實例;

METHOD 為 HTTP 請求方法;

PATH 對應(yīng) URL 中的路徑;

HANDLER 是當(dāng)匹配到的路由時,用于處理請求的方法。

4.3 中間件

Express 設(shè)計哲學(xué)中一個重要組成部分就是為 Web 應(yīng)用提供中間件框架。Express 作者這樣 描述過中間件 「中間件可以訪問請求和響應(yīng)對象中的所有數(shù)據(jù),并通過 next() 函數(shù)將請求傳送回請求-響應(yīng)聲明周期中的下一個處理」。

需要注意的是在 MEAN.js 中自定義中間件的順序非常重要。當(dāng)項目啟動時,中間件的定義順序決定了它們的執(zhí)行順序。

除了自定義中間件外,MEAN.js 還是用了諸多第三方的中間件,它們是:

compression

serve-favicon

method-morgan

body-parser

override

cookie-parser

connect-flash

express-session

lusca

helmet

五 測試

我們使用 Mocha 組件對服務(wù)端代碼進(jìn)行測試。它是一款異步可維護(hù)的采用 BDD 語法的測試框架

5.1 斷言

Mocha needs an external assertion library to predicate the result of each test, in this case Should.js is being used. Should is an expressive library aiming to simplify tests and be readable. It extends the Object.prototype with a single non-enumerable getter that allows you to express how that object should behave.

5.2 Test Files

Each entity have its own test file located inside their respective module server tests folder. Ex.: modules/core/tests/server

5.3 Writing Tests

There are a few common steps we use to test an entity:

- In the beforeEach or before functions take care of prerequisites and create the objects you are about to use in your tests.
- For each test start with a describe function to indicate which method is being tested.
- Next, add your scenario tests using the it function.
- In the it function run the tests functionality and use should to assert what the end result should be.
- Finally use after or afterEach functions to finalize your tests and clear the test database.

六 認(rèn)證

Passport is an authentication middleware, which allows you to implement many authentication methods in your Express application.

Passport utilizes a modular approach that uses authentication strategies modules, offering a simple, configurable authentication solutions.

This boilerplate comes pre-bundled with 7 authentication mechanisms implemented in the config/passport.js file:

Local

The Local Strategy is used to authenticate users via username and password. 

Facebook

The Facebook Strategy is used to authenticate users via their Facebook account. 

Github

The Github Strategy is used to authenticate users via their Github account. 

Google

The Google Strategy is used to authenticate users via their Google account. 

Linkedin

The Linkedin Strategy is used to authenticate users via their Linkedin account. 

PayPal

The PayPal Strategy is used to authenticate users via their PayPal account. 

Twitter

The Twitter Strategy is used to authenticate users via their Twitter account. 
七 創(chuàng)建 AngularJS 導(dǎo)航

MEAN.js 提供了一個創(chuàng)建和管理 AngularJS 導(dǎo)航功能組件。這個組件提供很多使用方法:

Menus.getMenu(menuid)

返回導(dǎo)航 ID 為 menuid 的菜單對象。

var menu = Menus.getMenu("myMenu");

Menus.addMenu(menuId, [options])

創(chuàng)建標(biāo)識為 menuId 的導(dǎo)航:

menuId 必選 - 識別當(dāng)前導(dǎo)航

options 可選,默認(rèn)值為 {} - 值為導(dǎo)航對象信息,包括:

items 默認(rèn) [] - 一個菜單項的數(shù)組,用來初始化菜單。

roles 默認(rèn) ["user", "admin"] - 能夠以允許查看此菜單的角色的數(shù)組。

Menus.addMenu("myMenu", {roles:"*"});

Menus.removeMenu(menuId)

刪除一個導(dǎo)航配置.

Menus.removeMenu("myMenu");

Menus.addMenuItem(menuId, [options])

創(chuàng)建一個新的導(dǎo)航對象。方法一樣包含兩個參數(shù):

menuId (Required) - 識別當(dāng)前導(dǎo)航

options (Optional; Default: {}) - 導(dǎo)航選項具體初始化選項??赡艿倪x項包括:

title (Optional; Default: "") - 導(dǎo)航名稱.

state (Optional; Default: "") - The UIRoute value, which is used to define the URL scheme where this menu item is marked as active.

type (Optional; Default: "item") - 值為 "item" 或 "dropdown".

class (Optional; Default: undefined) - CSS class(es) to apply to the menu list item (li) that is created.

roles (Optional; Default: menu.roles) - An array indicating the roles that are allowed to view this menu item.

position (Optional; Default: 0) - Specify the order of appearance.

Menus.addMenuItem("topbar", {title: "Menu Item", state: "menuitemstate"});

Menus.removeMenuItem(menuId, menuItemState)

刪除給定的導(dǎo)航配置。方法接收兩個參數(shù):

menuId (Required) - 識別當(dāng)前導(dǎo)航

menuItemState (Required) - Indicates the menu item state that should be removed.

Menus.removeMenuItem("topbar", "menuitemstate");

Menus.addSubMenuItem(menuId, parentItemState, [options])

向給定標(biāo)識符導(dǎo)航元素中添加子導(dǎo)航對象。

menuId (Required) - 識別當(dāng)前導(dǎo)航

parentItemState (Required) - Indicates the parent menu item state.

options (Optional; Default: {}) - Indicates the options object to initialize the sub menu item with. Possible options include:

title (Optional; Default: "") - A String title for the menu item.

state (Optional; Default: "") - The UIRoute value, which is used to define the URL scheme where this menu item is marked as active.

roles (Optional; Default: parent.roles) - An array indicating the roles that are allowed to view this menu item.

position (Optional; Default: 0) - Specify the order of appearance.

    Menus.addSubMenuItem("topbar", "dropdown1state", {title: "Sub Menu Item", state: "submenuitemstate"});

Menus.removeSubMenuItem(menuId, submenuItemState)

從已有導(dǎo)航中刪除給定標(biāo)識的導(dǎo)航配置。接收兩個參數(shù):

menuId (Required) - 識別當(dāng)前導(dǎo)航

submenuItemState (Required) - Indicates the sub menu item state that should be removed.

    Menus.removeSubMenuItem("topbar", "submenuitemstate");

導(dǎo)航信息配置通常在應(yīng)用模塊中進(jìn)行定義配置。一個簡單的導(dǎo)航配置示例如下:

angular.module("example").run(["Menus",
  function(Menus) {
    Menus.addMenuItem("topbar", {title: "Example", state: "example"});
    
    Menus.addMenuItem("topbar", {title: "Example Dropdown", state: "exampledropdown", type: "dropdown"});
    Menus.addSubMenuItem("topbar", "exampledropdown", {title: "Example Sub Item", state: "examplesubitem"});
  }
]);
八 擴(kuò)展資料

Lean MEAN Web App Machine

MEAN Web Development - Second Edition

Web Application Development with MEAN

MEAN Blueprints

Mastering MEAN Web Development: Expert Full Stack JavaScript (Video)

原文:http://meanjs.org/docs.html

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

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

相關(guān)文章

  • MongoDB 資源、庫、工具、應(yīng)用程序精選列表中文版

    摘要:推薦閱讀資源庫工具應(yīng)用程序精選列表中文版有哪些鮮為人知,但是很有意思的網(wǎng)站一份攻城獅筆記每天搜集上優(yōu)秀的項目一些有趣的民間故事超好用的谷歌瀏覽器油猴插件合集目錄資源文檔文章圖書會談教程更多庫工具管理數(shù)據(jù)部署桌面發(fā)展監(jiān)控應(yīng)用資源文檔介紹文檔教 推薦閱讀 MongoDB 資源、庫、工具、應(yīng)用程序精選列表中文版 有哪些鮮為人知,但是很有意思的網(wǎng)站? 一份攻城獅筆記 每天搜集 Github ...

    e10101 評論0 收藏0
  • 【全文】狼叔:如何正確的學(xué)習(xí)Node.js

    摘要:感謝大神的免費的計算機(jī)編程類中文書籍收錄并推薦地址,以后在倉庫里更新地址,聲音版全文狼叔如何正確的學(xué)習(xí)簡介現(xiàn)在,越來越多的科技公司和開發(fā)者開始使用開發(fā)各種應(yīng)用。 說明 2017-12-14 我發(fā)了一篇文章《沒用過Node.js,就別瞎逼逼》是因為有人在知乎上黑Node.js。那篇文章的反響還是相當(dāng)不錯的,甚至連著名的hax賀老都很認(rèn)同,下班時讀那篇文章,竟然坐車的還坐過站了。大家可以很...

    Edison 評論0 收藏0
  • 【全文】狼叔:如何正確的學(xué)習(xí)Node.js

    摘要:感謝大神的免費的計算機(jī)編程類中文書籍收錄并推薦地址,以后在倉庫里更新地址,聲音版全文狼叔如何正確的學(xué)習(xí)簡介現(xiàn)在,越來越多的科技公司和開發(fā)者開始使用開發(fā)各種應(yīng)用。 說明 2017-12-14 我發(fā)了一篇文章《沒用過Node.js,就別瞎逼逼》是因為有人在知乎上黑Node.js。那篇文章的反響還是相當(dāng)不錯的,甚至連著名的hax賀老都很認(rèn)同,下班時讀那篇文章,竟然坐車的還坐過站了。大家可以很...

    fengxiuping 評論0 收藏0
  • Wizard 開源文檔管理系統(tǒng)1.0發(fā)布啦

    摘要:總結(jié)如果你在為公司尋找一款開源免費的開發(fā)文檔文檔管理工具,不妨考慮一下項目,一定不會讓你失望的。 Wizard 是一款開源文檔管理系統(tǒng),項目地址為 https://github.com/mylxsw/wizard。這個項目是 我 在2017年就開始開發(fā)的,起初只是想做一款能夠在公司內(nèi)部把Swagger文檔管理起來的工具,但在這近兩年的時間里,一直斷斷續(xù)續(xù)的為其添加各種功能,現(xiàn)在終于下決...

    cod7ce 評論0 收藏0

發(fā)表評論

0條評論

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