内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

Node.js模塊和包(Modules)-創(chuàng)新互聯(lián)

模塊(Module)和包(Package)是 Node.js 最重要的支柱。開(kāi)發(fā)一個(gè)具有一定規(guī)模的程序不可能只用一個(gè)文件,通常需要把各個(gè)功能拆分、封裝,然后組合起來(lái),模塊正是為了實(shí)現(xiàn)這種方式而誕生的。在瀏覽器 Javascript 中,腳本模塊的拆分和組合通常使用 HTML 的 script 標(biāo)簽來(lái)實(shí)現(xiàn)。Node.js 提供了 require 函數(shù)來(lái)調(diào)用其它模塊,而且模塊都是基于文件的。

成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括德惠網(wǎng)站建設(shè)、德惠網(wǎng)站制作、德惠網(wǎng)頁(yè)制作以及德惠網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃等。多年來(lái),我們專(zhuān)注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,德惠網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶(hù)以成都為中心已經(jīng)輻射到德惠省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶(hù)的支持與信任!

Node.js 的模塊和包經(jīng)常被相提并論,因?yàn)槟K和包是沒(méi)有本質(zhì)區(qū)別的,兩個(gè)概念也時(shí)?;煊谩H绻嫖?,那么可以把包理解成是實(shí)現(xiàn)某個(gè)功能模塊的集合,用于發(fā)布和維護(hù)。對(duì)使用者來(lái)說(shuō),模塊和包的區(qū)別是透明的,因此經(jīng)常不做區(qū)分。

1、什么是模塊

模塊是 Node.js 應(yīng)用程序的基本組成部分,文件和模塊是一一對(duì)應(yīng)的。換言之,一個(gè) Node.js 文件就是一個(gè)模塊,這個(gè)文件可能是 Javascript 代碼、JSON 或者編譯過(guò)的 C/C++ 擴(kuò)展。

例如 var http = require(' http '),其中,http 是 Node.js 的一個(gè)核心模塊,其內(nèi)部是用 C++ 實(shí)現(xiàn)的,外部用 Javascript 封裝。我們通過(guò) require 函數(shù)獲取了這個(gè)模塊,然后才能使用其中的對(duì)象。

2、創(chuàng)建及加載模塊

2-1、創(chuàng)建模塊

在 Node.js 中,創(chuàng)建一個(gè)模塊非常簡(jiǎn)單,因?yàn)橐粋€(gè)文件就是一個(gè)模塊,例如:

var hello = require('./hello');
hello.world();

上例中,代碼 require(' ./hello ') 引入了當(dāng)前目錄下的 hello.js 文件(./ 表示當(dāng)前目錄,Node.js 默認(rèn)后綴為 js)

Node.js 提供了兩個(gè) exports 和 require 兩個(gè)對(duì)象,其中,exports 是模塊公開(kāi)的接口,require 用于從外部獲取一個(gè)模塊的接口,即獲取模塊的 exports 對(duì)象。

通過(guò)一個(gè)例子簡(jiǎn)單的了解下模塊,創(chuàng)建一個(gè) module.js 文件,代碼如下:

var name;

exports.setName = function( uname ){
    name = uname;
};

exports.sayHello = function(){
    console.log('Hello' +name);
};

在同一目錄下創(chuàng)建 getmoudle.js 文件,代碼如下:

//引用當(dāng)前目錄下的 module.js 模塊
var myModule = require('./module');

myModule.setName('Roger');
myModule.sayHello();

運(yùn)行 node getmodule.js,控制臺(tái)輸出結(jié)果為:

Node.js 模塊和包(Modules)

在這個(gè)例子中,module.js 通過(guò) exports 對(duì)象 setName 和 sayHello 作為模塊的訪問(wèn)接口,在 getmodule.js 中通過(guò) require(' ./module ') 加載這個(gè)模塊,然后就可以直接訪問(wèn) module.js 中 exports 對(duì)象的成員函數(shù)了。

這種接口封裝方式比許多語(yǔ)言要簡(jiǎn)潔的多,同時(shí)也不失優(yōu)雅,未引入違反語(yǔ)義的特性,符合傳統(tǒng)的編程邏輯。在這個(gè)基礎(chǔ)上,我們可以構(gòu)建大型的應(yīng)用程序,npm 提供的上萬(wàn)個(gè)模塊都是通過(guò)這種方式搭建起來(lái)的。

2-2、單次加載

上面這個(gè)例子有點(diǎn)類(lèi)似于創(chuàng)建一個(gè)對(duì)象,但實(shí)際上和對(duì)象又有本質(zhì)的區(qū)別,因?yàn)?nbsp;require 不會(huì)重復(fù)加載模塊,也就是說(shuō)無(wú)論調(diào)用多少次 require,獲得的模塊都是同一個(gè)。

新建一個(gè) loadmoudle.js 文件,代碼如下:

var hello1 = require('./module');
hello1.setName('Roger');

var hello2 = require('./module');
hello2.setName('Sarahling');

hello1.sayHello();

運(yùn)行 node loadmodule.js,控制臺(tái)輸出結(jié)果為:

Node.js 模塊和包(Modules)

為什么不是“Hello Roger”呢?這是因?yàn)樽兞?hello1 和 hello2 指向的是同一個(gè)實(shí)例,因此 hello1.setName 的結(jié)果被 hello2.setName 覆蓋,最終輸出結(jié)果是由后者決定的。

2-3、覆蓋 exports

有時(shí)候我們只是想把一個(gè)對(duì)象封裝到模塊中,例如,新建一個(gè) singleObject.js 文件,代碼如下:

function Hello(){
    var name;
    this.setName = function(uname){
        name = uname;
    };

    this.sayHello = function(){
        console.log('Hello '+name);
    }
}

module.exports = Hello;

新建一個(gè) getHello.js 文件,獲得這個(gè)對(duì)象:

var Hello = require('./singleObject');

hello = new Hello();
hello.setName('Bob');
hello.sayHello();

運(yùn)行 node getHello.js,控制臺(tái)輸出結(jié)果為:

Node.js 模塊和包(Modules)

注意,模塊接口的唯一變化是使用 module.exports = Hello 代替了 exports.Hello = Hello。在外部引用模塊時(shí),其接口對(duì)象就是要輸出的 Hello 對(duì)象本身,而不是原先的 exports。

事實(shí)上,exports 本身僅僅是一個(gè)普通的空對(duì)象,即{},它專(zhuān)門(mén)用來(lái)聲明接口,本質(zhì)上是通過(guò)它為模塊閉包的內(nèi)部建立一個(gè)有限的訪問(wèn)接口。因?yàn)樗鼪](méi)有任何特殊的地方,所以可用其它東西來(lái)代替。

注意:不可以通過(guò)對(duì) exports 直接賦值代替對(duì) module.exports 賦值。exports 實(shí)際上只是一個(gè)和 module.exports 指向同一個(gè)對(duì)象的變量,它本身會(huì)在模塊執(zhí)行結(jié)束后釋放,但 module 不會(huì),因此只能通過(guò)指定 module.exports 來(lái)改變?cè)L問(wèn)接口。

3、服務(wù)端的模塊放在哪里

在 Node.js 初識(shí) HTTP 模塊 介紹中,我們就已經(jīng)見(jiàn)到了模塊的使用,像這樣

//第一步: 引入 http 模塊
var http = require('http');
 
//第二步:創(chuàng)建一個(gè)服務(wù)器(requestListener 是一個(gè)函數(shù),里面有2個(gè)參數(shù),一個(gè)請(qǐng)求消息,一個(gè)響應(yīng)消息)
var server = http.createServer(function(req, res){
 
});
 
//第三步:服務(wù)器監(jiān)聽(tīng)本地的82端口
server.listen(8082, '127.0.0.1');

Node.js 中自帶了一個(gè)叫做 http 的模塊,我們?cè)诖a中請(qǐng)求它并把返回值賦值給一個(gè)本地變量,這把我們的本地變量變成了一個(gè)擁有所有 http 模塊所提供的公共方法的對(duì)象。

Node.js 的 require 方法中文件查找策略如下:

由于 Node.js 中存在 4 類(lèi)模塊(原生模塊和 3種文件模塊),盡管 require 方法及其簡(jiǎn)單,但是內(nèi)部的加載卻是十分復(fù)雜的,其加載優(yōu)先級(jí)也各自不同

Node.js 模塊和包(Modules)

3-1、從文件模塊緩存中加載

盡管原生模塊與文件模塊的優(yōu)先級(jí)不同,但是都不會(huì)優(yōu)先于從文件模塊的緩存中加載已經(jīng)存在的模塊。

3-2、從原生模塊加載

原生模塊的優(yōu)先級(jí)僅次于文件模塊緩存的優(yōu)先級(jí)。require方法在解析文件名之后,優(yōu)先檢查模塊是否在原生模塊列表中。以http模塊為例,盡管在目錄下存在一個(gè)http/http.js/http.node/http.json文件,require("http")都不會(huì)從這些文件中加載,而是從原生模塊中加載。

原生模塊也有一個(gè)緩存區(qū),同樣也是優(yōu)先從緩存區(qū)加載。如果緩存區(qū)沒(méi)有被加載過(guò),則調(diào)用原生模塊的加載方式進(jìn)行加載和執(zhí)行。

3-3、從文件加載

當(dāng)文件模塊緩存中不存在,而且不是原生模塊的時(shí)候,Node.js會(huì)解析require方法傳入的參數(shù),并從文件系統(tǒng)中加載實(shí)際的文件,加載過(guò)程中的包裝和編譯細(xì)節(jié)在前一節(jié)中已經(jīng)介紹過(guò),這里我們將詳細(xì)描述查找文件模塊的過(guò)程,其中,也有一些細(xì)節(jié)值得知曉。

require方法接受以下幾種參數(shù)的傳遞:

http、fs、path等,原生模塊。

./mod或../mod,相對(duì)路徑的文件模塊。

/pathtomodule/mod,絕對(duì)路徑的文件模塊。

mod,非原生模塊的文件模塊。

4、創(chuàng)建包

包是在模塊基礎(chǔ)上更深一步的抽象,Node.js 的包類(lèi)似于 C/C++ 的函數(shù)庫(kù)或者 Java/.Net的類(lèi)庫(kù)。它將某個(gè)獨(dú)立的功能封裝起來(lái),用于發(fā)布、更新、依賴(lài)管理和版本控制。Node.js 根據(jù) CommonJS 規(guī)范實(shí)現(xiàn)了包機(jī)制,開(kāi)發(fā)了 npm來(lái)解決包的發(fā)布和獲取需求。

Node.js 的包是一個(gè)目錄,其中包含一個(gè) JSON 格式的包說(shuō)明文件 package.json。嚴(yán)格符合CommonJS 規(guī)范的包應(yīng)該具備以下特征:

package.json 必須在包的頂層目錄下;

二進(jìn)制文件應(yīng)該在 bin 目錄下;

JavaScript 代碼應(yīng)該在 lib 目錄下;

文檔應(yīng)該在 doc 目錄下;

單元測(cè)試應(yīng)該在 test 目錄下。

Node.js 對(duì)包的要求并沒(méi)有這么嚴(yán)格,只要頂層目錄下有 package.json,并符合一些規(guī)范即可。當(dāng)然為了提高兼容性,我們還是建議你在制作包的時(shí)候,嚴(yán)格遵守 CommonJS 規(guī)范。

4-1、作為文件夾的模塊

模塊與文件是一一對(duì)應(yīng)的。文件不僅可以是 JavaScript 代碼或二進(jìn)制代碼,還可以是一個(gè)文件夾。最簡(jiǎn)單的包,就是一個(gè)作為文件夾的模塊。下面我們來(lái)看一個(gè)例子,建立一個(gè)叫做 somepackage 的文件夾,在其中創(chuàng)建 index.js,內(nèi)容如下:

exports.hello = function(){
    console.log('Hello World!');
}

然后在 somepackage 之外建立 getpackage.js,內(nèi)容如下:

var somePackage = require('./somepackage');

somePackage.hello();

運(yùn)行 getpackage.js,控制輸出結(jié)果如下:

Node.js 模塊和包(Modules)

我們使用這種方法可以把文件夾封裝為一個(gè)模塊,即所謂的包。包通常是一些模塊的集合,在模塊的基礎(chǔ)上提供了更高層的抽象,相當(dāng)于提供了一些固定接口的函數(shù)庫(kù)。通過(guò)定制package.json,我們可以創(chuàng)建更復(fù)雜、更完善、更符合規(guī)范的包用于發(fā)布。

4-2、package.json

在 somepackage 文件夾下,創(chuàng)建一個(gè)叫做 package.json 的文件,內(nèi)容如下所示:

{
  "main" : "./lib/interface.js"
}

然后將 index.js 重命名為 interface.js 并放入 lib 子文件夾下。以同樣的方式再次調(diào)用這個(gè)包,依然可以正常使用。

Node.js 模塊和包(Modules)

Node.js 在調(diào)用某個(gè)包時(shí),會(huì)首先檢查包中 package.json 文件的 main 字段,將其作為包的接口模塊,如果 package.json 或 main 字段不存在,會(huì)嘗試尋找 index.js 或 index.node 作為包的接口。

package.json 是 CommonJS 規(guī)定的用來(lái)描述包的文件,完全符合規(guī)范的 package.json 文件應(yīng)該含有以下字段。

name:包的名稱(chēng),必須是唯一的,由小寫(xiě)英文字母、數(shù)字和下劃線組成,不能包含空格。

description:包的簡(jiǎn)要說(shuō)明。

version:符合語(yǔ)義化版本識(shí)別規(guī)范的版本字符串。

keywords:關(guān)鍵字?jǐn)?shù)組,通常用于搜索。

maintainers:維護(hù)者數(shù)組,每個(gè)元素要包含 name、email (可選)、web (可選)字段。

contributors:貢獻(xiàn)者數(shù)組,格式與maintainers相同。包的作者應(yīng)該是貢獻(xiàn)者數(shù)組的第一個(gè)元素。

bugs:提交bug的地址,可以是網(wǎng)址或者電子郵件地址。

licenses:許可證數(shù)組,每個(gè)元素要包含 type (許可證的名稱(chēng))和 url (鏈接到許可證文本的地址)字段。

repositories:倉(cāng)庫(kù)托管地址數(shù)組,每個(gè)元素要包含 type (倉(cāng)庫(kù)的類(lèi)型,如 git )、url (倉(cāng)庫(kù)的地址)和 path (相對(duì)于倉(cāng)庫(kù)的路徑,可選)字段。

dependencies:包的依賴(lài),一個(gè)關(guān)聯(lián)數(shù)組,由包名稱(chēng)和版本號(hào)組成。

下面是一個(gè)完全符合 CommonJS 規(guī)范的 package.json 示例:

{
  "name": "mypackage",
  "description": "Sample package for CommonJS. This package demonstrates the required
  elements of a CommonJS package.",
  "version": "0.7.0",
  "keywords": [
    "package",
    "example"
  ],
  "maintainers": [
    {
      "name": "Bill Smith",
      "email": "bills@example.com",
    }
  ],
  "contributors": [
    {
      "name": "BYVoid",
      "web": "http://www.byvoid.com/"
    }
  ],
  "bugs": {
    "mail": "dev@example.com",
    "web": "http://www.example.com/bugs"
  },
  "licenses": [
    {
      "type": "GPLv2",
      "url": "http://www.example.org/licenses/gpl.html"
    }
  ],
  "repositories": [
    {
      "type": "git",
      "url": "http://github.com/BYVoid/mypackage.git"
    }
  ],
  "dependencies": {
    "webkit": "1.2",
    "ssl": {
      "gnutls": ["1.0", "2.0"],
      "openssl": "0.9.8"
    }
  }
}

4-3、Node.js 包管理器

Node.js包管理器,即npm是 Node.js 官方提供的包管理工具,它已經(jīng)成了 Node.js 包的標(biāo)準(zhǔn)發(fā)布平臺(tái),用于 Node.js 包的發(fā)布、傳播、依賴(lài)控制。npm 提供了命令行工具,使你可以方便地下載、安裝、升級(jí)、刪除包,也可以讓你作為開(kāi)發(fā)者發(fā)布并維護(hù)包。

(1)、獲取一個(gè)包

使用 npm 安裝包的命令格式為:

npm [install/i] [package_name]

比如你要安裝 express,可以在命令行運(yùn)行:

$ npm install express

$ npm i express

可以看到安裝信息如下:

Node.js 模塊和包(Modules)

Node.js 模塊和包(Modules)

此時(shí) express 就安裝成功了,并且放置在當(dāng)前目錄的 node_moudles 子目錄下。npm 在獲取 express 的時(shí)候還將自動(dòng)解析其依賴(lài),并獲取 express 依賴(lài)的 mime、mkdirp、qs 和 connect。

(2)、本地模式 和 全局模式

npm 在默認(rèn)情況下會(huì)從 https://www.npmjs.com/  搜索或下載包,將包安裝到當(dāng)前目錄的 node_moudles 子目錄下。

在使用 npm 安裝包的時(shí)候,有兩種模式:本地模式和全局模式。默認(rèn)情況下我們使用 npm install 命令就是采用本地模式,即把包安裝到當(dāng)前目錄的 node_modules 子目錄下。Node.js 的 require 在加載模塊時(shí)會(huì)嘗試搜尋 node_modules 子目錄,因此使用 npm 本地模式安裝的包可以直接被引用。

npm 還有另一種不同的安裝模式被成為全局模式,使用方法為:

npm [install/i] -g [package_name]

與本地模式的不同之處就在于多了一個(gè)參數(shù) -g。

為什么要使用全局模式呢?多數(shù)時(shí)候并不是因?yàn)樵S多程序都有可能用到它,為了減少多重副本而使用全局模式,而是因?yàn)楸镜啬J讲粫?huì)注冊(cè) PATH 環(huán)境變量。舉例說(shuō)明,我們安裝supervisor 是為了在命令行中運(yùn)行它,譬如直接運(yùn)行 supervisor script.js,這時(shí)就需要在 PATH環(huán)境變量中注冊(cè) supervisor。npm 本地模式僅僅是把包安裝到 node_modules 子目錄下,其中 的 bin 目錄沒(méi)有包含在 PATH 環(huán)境變量中,不能直接在命令行中調(diào)用。而當(dāng)我們使用全局模式安裝時(shí),npm 會(huì)將包安裝到系統(tǒng)目錄,譬如 /usr/local/lib/node_modules/,同時(shí) package.json 文件中 bin 字段包含的文件會(huì)被鏈接到 /usr/local/bin/。/usr/local/bin/ 是在PATH 環(huán)境變量中默認(rèn)定義的,因此就可以直接在命令行中運(yùn)行 supervisor script.js命令了。

本地模式和全局模式的特點(diǎn)如下表所示:

模式可通過(guò) require 使用
注冊(cè)PATH
本地模式
全局模式

總而言之,當(dāng)我們要把某個(gè)包作為工程運(yùn)行時(shí)的一部分時(shí),通過(guò)本地模式獲取,如果要 在命令行下使用,則使用全局模式安裝。

(3)、創(chuàng)建全局鏈接

npm 提供了一個(gè)有趣的命令 npm link(不支持 Windows),它的功能是在本地包和全局包之間創(chuàng)建符號(hào)鏈接。我們說(shuō)過(guò)使用全局模式安裝的包不能直接通過(guò) require 使用,但通過(guò) npm link命令可以打破這一限制。舉個(gè)例子,我們已經(jīng)通過(guò) npm install -g express 安裝了 express,這時(shí)在工程的目錄下運(yùn)行命令:

$ npm link express
./node_modules/express -> /usr/local/lib/node_modules/express

我們可以在 node_modules 子目錄中發(fā)現(xiàn)一個(gè)指向安裝到全局的包的符號(hào)鏈接。通過(guò)這 種方法,我們就可以把全局包當(dāng)本地包來(lái)使用了。

除了將全局的包鏈接到本地以外,使用 npm link命令還可以將本地的包鏈接到全局。使用方法是在包目錄( package.json 所在目錄)中運(yùn)行 npm link 命令。如果我們要開(kāi)發(fā)一個(gè)包,利用這種方法可以非常方便地在不同的工程間進(jìn)行測(cè)試。

(4)、包的發(fā)布

npm 可以非常方便地發(fā)布一個(gè)包,比 pip、gem、pear 要簡(jiǎn)單得多。在發(fā)布之前,首先需要讓我們的包符合 npm 的規(guī)范,npm 有一套以 CommonJS 為基礎(chǔ)包規(guī)范,但與 CommonJS并不完全一致,其主要差別在于必填字段的不同。通過(guò)使用 npm init 可以根據(jù)交互式問(wèn)答產(chǎn)生一個(gè)符合標(biāo)準(zhǔn)的 package.json,例如創(chuàng)建一個(gè)名為 byvoidmodule 的目錄,然后在這個(gè)目錄中運(yùn)行npm init:

Node.js 模塊和包(Modules)

這樣就在 byvoidmodule 目錄中生成一個(gè)符合 npm 規(guī)范的 package.json 文件。創(chuàng)建一個(gè)index.js 作為包的接口,一個(gè)簡(jiǎn)單的包就制作完成了。

在發(fā)布前,我們還需要獲得一個(gè)賬號(hào)用于今后維護(hù)自己的包,使用 npm adduser 根據(jù)提示輸入用戶(hù)名、密碼、郵箱,等待賬號(hào)創(chuàng)建完成。完成后可以使用 npm whoami 測(cè)驗(yàn)是否已經(jīng)取得了賬號(hào)。

接下來(lái),在 package.json 所在目錄下運(yùn)行 npm publish,稍等片刻就可以完成發(fā)布了。

打開(kāi)瀏覽器,訪問(wèn) http://search.npmjs.org/ 就可以找到自己剛剛發(fā)布的包了?,F(xiàn)在我們可以在世界的任意一臺(tái)計(jì)算機(jī)上使用 npm install byvoidmodule 命令來(lái)安裝它。下圖是npmjs.org上包的描述頁(yè)面。

Node.js 模塊和包(Modules)

如果你的包將來(lái)有更新,只需要在 package.json 文件中修改 version 字段,然后重新使用 npm publish 命令就行了。如果你對(duì)已發(fā)布的包不滿意(比如我們發(fā)布的這個(gè)毫無(wú)意義的包),可以使用 npm unpublish 命令來(lái)取消發(fā)布。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。

本文名稱(chēng):Node.js模塊和包(Modules)-創(chuàng)新互聯(lián)
文章分享:http://www.rwnh.cn/article38/ceidpp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、移動(dòng)網(wǎng)站建設(shè)外貿(mào)網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站網(wǎng)站收錄、App開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
息烽县| 惠州市| 饶平县| 永济市| 迭部县| 卓尼县| 济南市| 宿迁市| 玉屏| 报价| 茂名市| 瑞丽市| 扎赉特旗| 靖西县| 象山县| 岳池县| 乌拉特后旗| 临泽县| 米林县| 长春市| 湟中县| 全南县| 北京市| 浦东新区| 子洲县| 大兴区| 扬州市| 静宁县| 九龙城区| 中卫市| 新竹市| 岫岩| 建宁县| 连江县| 平武县| 交城县| 桂阳县| 密云县| 酉阳| 莱西市| 治多县|