当前位置: 首页 > 后端技术 > Node.js

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

时间:2023-04-03 20:18:04 Node.js

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代码部署上的很多问题,常见的使用场景有以下几种:允许用户从NPM服务器下载别人编写的第三方包到本地使用。允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。允许用户将自己编写的包或命令行程序上传到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.jsvar 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服务器又起来了~