Node.js搭簡單服務器與npm包管理

Node.js搭簡單服務器與npm包管理:javascript

什麼是Node.jshtml

文檔介紹都是這樣介紹的:簡單的說--就是運行在服務端的 JavaScrip,

第一步:安裝node前端

官網下載地址(根據電腦型號選擇32位或者64位):http://nodejs.cn/

第二步:java

安裝--一直next就能夠了

第三步:node

檢測是否安裝成功 cmd打開控制面板->輸入node -v,出來版本號即爲安裝成功

第四步:jquery

體驗node:打開控制面板,
鍵入node進入命令交互模式,能夠輸入一條代碼語句後當即執行並顯示結果

搭建一個簡易的node.js服務器git

新建一個文件夾node 進入該文件夾,個人建在c盤了,cd node
新建一個server.js的文件夾web

//引入http模塊
var http = require("http");
//設置主機名
var hostName = '127.0.0.1';請輸入代碼
//設置端口
var port = 8080;
//建立服務
var server = http.createServer(function(req,res){
    res.setHeader('Content-Type','text/plain');
    res.end("hello nodejs");

});
server.listen(port,hostName,function(){
    console.log(`服務器運行在http://${hostName}:${port}`);
});

命令行執行 node server.js命令
在瀏覽器窗口打開輸入:http://127.0.0.1:8080/express

到這步一個web服務器就創建成功了! 沒錯就是這麼簡單
接着咱們來看下前端如何獲取服務器東西:

咱們編寫一個demo.htmlnpm

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Node.js</title>
    <script type="text/javascript" src="jquery-1.11.3.js"></script>
</head>
<body>
    <div class="container">
        <div class="btn" onclick="getText()">獲取數據</div>
        <div class="text"></div>
    </div>
</body>
<script type="text/javascript">
    function getText(){
        $(".text").load("http:127.0.0.1:8080");
    }
</script>
</html>

打開demo.html中,點擊,而後出現以下:
跨域請求~
web服務器並不支持跨域請求,因此報錯了。

解決:在咱們的服務器的響應頭server.js文件里加上以下代碼:

res.setHeader('Content-Type','text/plain');
    res.setHeader('Access-Control-Allow-Origin',"*")
    res.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");  
    res.end("hello nodejs");

而後重啓一下服務器:

打開demo.html,點擊獲取數據,就能夠看到hello node.js ,我看查看一下network能夠看的請求數據

一般請求服務器都會拼接參數的,最經常使用的就是get請求,post請求。很明顯,咱們如今的代碼還不能支持。express框架很好的封裝了nodejs的http模塊,使咱們用起來很是的簡單。 引入express :經過命令行:

$ npm install express –save

這裏咱們插入npm 這個話題:

NPM是隨同NodeJS一塊兒安裝的包管理工具,能解決NodeJS代碼部署上的不少問題,常見的使用場景有如下幾種:

  1. 容許用戶從NPM服務器下載別人編寫的第三方包到本地使用。
  2. 容許用戶從NPM服務器下載並安裝別人編寫的命令行程序到本地使用。
  3. 容許用戶將本身編寫的包或命令行程序上傳到NPM服務器供別人使用。

    因爲新版的nodejs已經集成了npm,因此以前npm也一併安裝好了。一樣能夠經過輸入 "npm -v" 來測試是否成功安裝,使用 npm 命令安裝模塊

npm 安裝 Node.js 模塊語法格式以下:

$ npm install <Module Name>

如下實例,咱們使用 npm 命令安裝經常使用的 Node.js web框架模塊 express:

$ npm install express

安裝好以後,express 包就放在了工程目錄下的 node_modules 目錄中,所以在代碼中只須要經過 require('express') 的方式就好,無需指定第三方包路徑。

var express = require('express');

全局安裝與本地安裝

npm 的包安裝分爲本地安裝(local)、全局安裝(global)兩種,從敲的命令行來看,差異只是有沒有-g而已,好比
npm install express          # 本地安裝
npm install express -g   # 全局安裝

查看安裝信息
你可使用如下命令來查看全部全局安裝的模塊:

$ npm list -g
查看具體模塊版本:npm list grunt

卸載模塊
咱們可使用如下命令來卸載 Node.js 模塊。

$ npm uninstall express

卸載後,你能夠到 /node_modules/ 目錄下查看包是否還存在,或者使用如下命令查看:

$ npm ls

更新模塊
咱們可使用如下命令更新模塊:

$ npm update express

建立模塊
建立模塊,package.json 文件是必不可少的。咱們可使用 NPM 生成 package.json 文件,生成的文件包含了基本的結果:

$ npm init

接下來咱們就用如下命令來發布模塊:

$ npm publish

若是你以上的步驟都操做正確,你就能夠跟其餘模塊同樣使用 npm 來安裝。

Package.json 屬性說明

name - 包名。
version - 包的版本號。
description - 包的描述。
homepage - 包的官網 url 。
author - 包的做者姓名。
contributors - 包的其餘貢獻者姓名。
dependencies - 依賴包列表。若是依賴包沒有安裝,npm 會自動將依賴包安裝在 node_module 目錄下。
repository - 包代碼存放的地方的類型,能夠是 git 或 svn,git 可在 Github 上。
main - main 字段指定了程序的主入口文件,require('moduleName') 就會加載這個文件。這個字段的默認值是模塊根目錄下面的 index.js。
keywords - 關鍵字

大概的npm介紹到這~
咱們繼續咱們的express:

經過express()方法開啓服務,在經過get方法來設置匹配參數的路由,經過在回調函數的req中能夠獲取請求參數和地址,post請求也是相似,

不過post請求在獲取參數的時候要引入body-parser 中間件,用於處理 JSON, Raw, Text 和 URL 編碼的數據。命令行安裝:

$ npm install body-parser -save

而後新建server-express.js

var express = require("express");
var bodyParser=require("body-parser"); 
var app = express(); 
app.use(bodyParser.urlencoded({ extended: false }));  
var hostName = '127.0.0.1';
var port = 8080;
app.all('*', function(req, res, next) {  
    res.header("Access-Control-Allow-Origin", "*");  
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");  
    res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");  
    res.header("X-Powered-By",' 3.2.1')  
    res.header("Content-Type", "application/json;charset=utf-8");  
    next();  
});
app.get("/get",function(req,res){
    console.log("請求url:",req.path)
    console.log("請求參數:",req.query)
    res.send("這是get請求");
})
app.post("/post",function(req,res){
    console.log("請求參數:",req.body);
    var result = {code:200,msg:"post請求成功"};
    res.send(result);
});
app.listen(port,hostName,function(){
   console.log(`服務器運行在http://${hostName}:${port}`);
});

命令行:

$ node server-express.js

服務器又起來了~

相關文章
相關標籤/搜索