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代碼部署上的不少問題,常見的使用場景有如下幾種:
容許用戶將本身編寫的包或命令行程序上傳到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
服務器又起來了~