Node.js搭简单服务器与npm包管理

Node.js搭简单服务器与npm包管理:

什么是Node.js

文档介绍都是这样介绍的:简单的说--就是运行在服务端的 JavaScrip,

第一步:安装node

官网下载地址(根据电脑型号选择32位或者64位):http://nodejs.cn/

第二步:

安装--一直next就可以了

第三步:

检测是否安装成功 cmd打开控制面板->输入node -v,出来版本号即为安装成功

第四步:

体验node:打开控制面板,
键入node进入命令交互模式,可以输入一条代码语句后立即执行并显示结果

搭建一个简易的node.js服务器

新建一个文件夹node 进入该文件夹,我的建在c盘了,cd node
新建一个server.js的文件夹

//引入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/

到这步一个web服务器就建立成功了! 没错就是这么简单
接着我们来看下前端如何获取服务器东西:

我们编写一个demo.html

<!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

服务器又起来了~

    原文作者:silverWinter
    原文地址: https://segmentfault.com/a/1190000014427046
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞