一、简介

Node.js 是一个基于Google Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。Node.js 的包管理器 npm,是全球最大的开源库生态系统。

能方便地搭建响应速度快、易于扩展的网络应用,Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行的数据密集型的实时应用。

官网:https://nodejs.org/en/
中文:https://cnodejs.org/、http://nodejs.cn/

API:http://nodeapi.ucdok.com/#/api/

简单说Node.js就是运行在服务器端的JavaScript,是现在流行的语言中能同时运行在前端与后台的程序语言,你可以把JavaScript想像成Java与C#。相关技术:

数据库:MongoDB,非关系型数据库,NoSQL(Not only SQL)

MVC框架:AngularJS

Web服务器:Express

模板引擎:jade、ejs、htmljs、swig、hogan.js

二、搭建Node.js开发环境

2.1、安装Node.js

去官网下下载最新版本的Node.js一步一步按提示安装即可,如果安装失败就手动安装,将Node.js的安装位置配置到环境变量的path中。

安装完成后启动命令行,测试:

2.2、安装IDE开发Node.js插件

如果不使用IDE开发项目效率较低,在很多主流的集成开发环境(IDE)中都可以安装插件支持Node.js开发,如Eclipse,这里我们以HBuilder为例:

启动HBuilder->工具->插件安装

安装成功后就可以新建Node.js项目了:

这里选择Hello World,新建好的项目如下:

hello-world-server.js文件就是一个简单的web服务器,右键选择“运行方式”->”Node Application”

控制台提示“Server running at http://127.0.0.1:1337/”在浏览器查看的效果如下:

三、第一个Node.js程序

在上面的示例中,我们是通过IDE完成编译与运行的,其实手动运行也可以,比如编写一段代码如下:

server.js

复制代码
//依赖一个http模块,相当于java中的import,与C#中的using
var http = require('http');//创建一个服务器对象
server = http.createServer(function (req, res) {
//设置请求成功时响应头部的MIME为纯文本
res.writeHeader(200, {"Content-Type": "text/plain"});
//向客户端输出字符
res.end("Hello World\n");
});
//让服务器监听本地8000端口开始运行
server.listen(8000,'127.0.0.1');
console.log("server is runing at 127.0.0.1:8000");
复制代码

在node环境下解释运行:

运行结果:

引入 required 模块:我们可以使用 require 指令来载入 Node.js 模块。
创建服务器:服务器可以监听客户端的请求,类似于TomCat、IIS、Apache 、Nginx 等 HTTP 服务器。
接收请求与响应请求 服务器很容易创建,客户端可以使用浏览器或终端发送 HTTP 请求,服务器接收请求后返回响应数据。

第一行请求(require)Node.js 自带的 http 模块,并且把它赋值给 http 变量。
接下来我们调用 http 模块提供的函数: createServer 。这个函数会返回 一个对象,这个对象有一个叫做 listen 的方法,这个方法有一个数值参数, 指定这个 HTTP 服务器监听的端口号。

四、NPM(Node.js包管理器)

NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:
a)、允许用户从NPM服务器下载别人编写的第三方包到本地使用。
b)、允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
c)、允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。

官网:https://www.npmjs.com/

4.1、查看npm版本
由于新版的nodejs已经集成了npm,所以之前npm也一并安装好了。同样可以通过输入 “npm -v” 来测试是否成功安装。命令如下,出现版本提示表示安装成功:

4.2、升级npm

如果你安装的是旧版本的 npm,可以很容易得通过 npm 命令来升级

npm install npm -g

 

4.3、安装模块

npm install <Module Name> -参数

如果带参数-g表示全局安装,否则只是安装到某个目录下。

以下实例,我们使用 npm 命令安装常用的 Node.js web框架模块 express

4.4、卸载模块

我们可以使用以下命令来卸载 Node.js 模块。
npm uninstall <Module Name>

如先使用安装指令安装bootstrap:

npm install bootstrap

再使用卸载指令删除模块:

npm uninstall bootstrap

可以到 /node_modules/ 目录下查看包是否还存在

4.5、模块列表

使用模块列表命令可以方便的看到当前项目中依赖的包:
npm ls

4.6、更新模块

我们可以使用以下命令更新模块:
npm update 模块名称
npm up -g 模块名称

4.7、搜索模块

npm search 模块名称

4.8、NPM 常用命令

除了本章介绍的部分外,NPM还提供了很多功能,package.json里也有很多其它有用的字段。
除了可以在npmjs.org/doc/查看官方文档外,这里再介绍一些NPM常用命令。
NPM提供了很多命令,例如install和publish,使用npm help可查看所有命令。
NPM提供了很多命令,例如install和publish,使用npm help可查看所有命令。
使用npm help <command>可查看某条命令的详细帮助,例如npm help install。
在package.json所在目录下使用npm install . -g可先在本地安装当前命令行程序,可用于发布前的本地测试。
使用npm update <package>可以把当前目录下node_modules子目录里边的对应模块更新至最新版本。
使用npm update <package> -g可以把全局安装的对应命令行程序更新至最新版。
使用npm cache clear可以清空NPM本地缓存,用于对付使用相同版本号发布新版本代码的人。
使用npm unpublish <package>@<version>可以撤销发布自己发布过的某个版本代码。

4.9、更换NPM 镜像

因为npm的服务器在国外,在网络状态不好的情况下引入一个模块会因为网络延迟而失败,可以更换成国内速度更快的镜像服务器,这里以使用淘宝 NPM 镜像(http://npm.taobao.org/)为例:

npm install -g cnpm –registry=https://registry.npm.taobao.org

这样就可以使用 cnpm 命令来安装模块了:
$ cnpm install [name]

这是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。

如是安装失败,可以试试:

复制代码
alias cnpm="npm --registry=https://registry.npm.taobao.org \
--cache=$HOME/.npm/.cache/cnpm \
--disturl=https://npm.taobao.org/dist \
--userconfig=$HOME/.cnpmrc"
# Or alias it in .bashrc or .zshrc $ echo \n#alias for cnpm\nalias cnpm=”npm –registry=https://registry.npm.taobao.org \–cache=$HOME/.npm/.cache/cnpm \–disturl=https://npm.taobao.org/dist \–userconfig=$HOME/.cnpmrc’ >> ~/.zshrc && source ~/.zshrc
复制代码

 

五、Express

Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。
使用 Express 可以快速地搭建一个完整功能的网站。使用Node.js作为AngularJS开发Web服务器的最佳方式是使用Express模块。

Express官网: http://expressjs.com/

Express4.x API:http://expressjs.com/zh-cn/4x/api.html

5.2、Express框架核心特性

可以设置中间件来响应 HTTP 请求。

定义了路由表用于执行不同的 HTTP 请求动作。

可以通过向模板传递参数来动态渲染 HTML 页面。

丰富的 HTTP 快捷方法和任意排列组合的 Connect 中间件,让你创建健壮、友好的 API 变得既快速又简单。

Express 不对 Node.js 已有的特性进行二次抽象,我们只是在它之上扩展了 Web 应用所需的基本功能。

5.3、安装 Express

安装 Express 并将其保存到依赖列表中:

npm install express –save

以上命令全局安装express。也可安装时指定安装中间件。

body-parser - node.js 中间件,用于处理 JSON, Raw, Text 和 URL 编码的数据。

cookie-parser - 这就是一个解析Cookie的工具。通过req.cookies可以取到传过来的cookie,并把它们转成对象。

multer - node.js 中间件,用于处理 enctype=”multipart/form-data”(设置表单的MIME编码)的表单数据。

$ npm install body-parser –save
$ npm install cookie-parser –save
$ npm install multer –save

默认这些模块都已经添加。

5.4、第一个Express框架实例

接下来我们使用 Express 框架来输出 “Hello World”。
以下实例中我们引入了 express 模块,并在客户端发起请求后,响应 “Hello World” 字符串。

创建一个目录,如Project,进入命令行:

使用npm install express 导入express模块。

在目录下创建hello.js文件,如下所示:

复制代码
//引入express模块
var express = require('express');
//创建一个app对象,类似一个web 应用(网站)
var app = express();
//接受指定路径的请求,指定回调函数
app.get('/', function (req, res){
res.send('Hello World');
});
//创建一个web服务器,可以认为就是web服务器对象
//监听8081端口,当监听成功时回调
var server = app.listen(8081, function () {var host = server.address().address;  //地址var port = server.address().port;  //端口console.log("应用实例,访问地址为 http://%s:%s", host, port);
});
})
复制代码

使用node执行js:

运行结果:

5.5、使用Nodeclipse开发Express项目

如果直接使用记事本效率会不高,nodeclipse插件可以方便的创建一个Express项目,步骤如下:

创建好的项目如下:

app.js是网站:

复制代码
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');var index = require('./routes/index');
var users = require('./routes/users');var app = express();//指定视图引擎为ejs
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));app.use('/', index);
app.use('/users', users);// catch 404 and forward to error handler
app.use(function(req, res, next) {var err = new Error('Not Found');err.status = 404;next(err);
});// error handler
app.use(function(err, req, res, next) {// set locals, only providing error in developmentres.locals.message = err.message;res.locals.error = req.app.get('env') === 'development' ? err : {};// render the error pageres.status(err.status || 500);res.render('error');
});module.exports = app;
复制代码

bin\www是web服务器:

复制代码
#!/usr/bin/env node/*** 依赖模块,导入*/var app = require('../app');
var debug = require('debug')('nodejsexpress:server');
var http = require('http');/*** 从上下文环境中获得监听端口,如果空则3000*/var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);/*** 创建Web服务器*/var server = http.createServer(app);/*** 开始监听*/server.listen(port);
server.on('error', onError);  //指定发生错误时的事件
server.on('listening', onListening);  //当监听成功时的回调/*** 规范化端口*/function normalizePort(val) {var port = parseInt(val, 10);if (isNaN(port)) {// named pipereturn val;}if (port >= 0) {// port numberreturn port;}return false;
}/***错误事件监听*/function onError(error) {if (error.syscall !== 'listen') {throw error;}var bind = typeof port === 'string'? 'Pipe ' + port: 'Port ' + port;//错误处理switch (error.code) {case 'EACCES':console.error(bind + ' requires elevated privileges');process.exit(1);  //结束程序break;case 'EADDRINUSE':console.error(bind + ' is already in use');process.exit(1);break;default:throw error;}
}/*** 当用户访问服务器成功时的回调*/function onListening() {var addr = server.address();var bind = typeof addr === 'string'? 'pipe ' + addr: 'port ' + addr.port;debug('Listening on ' + bind);
}
复制代码

routers/index.js路由,有点类似控制器或Servlet:

复制代码
var express = require('express');
var router = express.Router();/* 获得首页 */
router.get('/', function(req, res, next) {res.render('index', { title: 'Express' });
});module.exports = router;
复制代码

views/index.ejs首页视图:

复制代码
<!DOCTYPE html>
<html><head><title><%= title %></title><link rel='stylesheet' href='/stylesheets/style.css' /></head><body><h1><%= title %></h1><p>Welcome to <%= title %></p></body>
</html>
复制代码

在www上右键选择“运行方式”->“Node Application”运行结果:

5.6、ejs基础

ejs是一个Express Web应用的模板引擎,在NodeJS开发中可以选择的模板引擎可能是所有Web应用开发中范围最广的,如jade、ejs、htmljs、swig、hogan.js,但ejs是最容易上手的,与jsp,asp,php的原始模板引擎风格很像。

官网:http://www.embeddedjs.com/

添加一个product.js路由:

复制代码
var express = require('express');
var router = express.Router();/* 产品 */
router.get('/', function(req, res, next) {var products=[];products.push({name:"ZTE U880",price:899.8});products.push({name:"HuWei 荣耀8",price:1899.8});products.push({name:"iPhone 7 Plus 128G",price:5899.8});//将product视图与指定的对象渲染后输出到客户端res.render('product', { title: '天狗商城', pdts:products});
});module.exports = router;
复制代码

在views目录下添加product.ejs视图,这里是一个简单的MVC:

复制代码
<!DOCTYPE html>
<html><head><title><%= title %></title><link rel='stylesheet' href='/stylesheets/style.css' /></head><body><h1><%= title %> - 产品列表</h1><table border="1" width="80%"><tr><th>序号</th><th>名称</th><th>价格</th></tr><%pdts.forEach(function(pdt,index){%><tr><td><%=index+1%></td><td><%=pdt.name%></td><td><%=pdt.price%></td></tr><%});%></table><ul><% for(var i=0; i<pdts.length; i++) {%><li><%=pdts[i].name%></li><% } %></body></html>
复制代码

修改app,注册定义好的模块product:

复制代码
var index = require('./routes/index');
var users = require('./routes/users');
var pdts = require('./routes/product');var app = express();//指定视图引擎为ejs
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));app.use('/', index);
app.use('/users', users);
app.use('/pdt', pdts);
复制代码

运行结果:

5.7、lodash

这是一个具有一致接口、模块化、高性能等特性的 JavaScript 工具库。可以非常方便的操作json。

官网:http://lodashjs.com/

安装:

npm i -g npm

npm i –save lodash

安装时先用cd切换到当前项目下。

如果浏览器使用可以直接引入:

<script src=”lodash.js”></script>

添加lodash依赖:

依赖成功后会在package.json中添加引用:

后台Node.js使用,可以引入模块:

复制代码
//导入lodash模块
var _= require('lodash');var products=[];
products.push({name:"ZTE U880",price:899.8});
products.push({name:"HuWei 荣耀8",price:1899.8});
products.push({name:"iPhone 7 Plus 128G",price:5899.8});//1、取出第一个元素
var obj1=_.first(products);
console.log(obj1.name);  //ZTE U880//2、取出最后一个元素
var obj2=_.last(products);
console.log(obj2.name);  //iPhone 7 Plus 128G//3、指定查找条件返回符合条件的索引
var obj3=_.findIndex(products,function(obj){return obj.price>=1000&&obj.name.indexOf("7")>0;
});
console.log(obj3);  //2//4、指定查找条件返回查找到的对象
var obj4=_.find(products,function(obj){return obj.price>=1000&&obj.name.indexOf("7")>0;
});
console.log(obj4);  //{ name: 'iPhone 7 Plus 128G', price: 5899.8 }//5、排序
var obj5=_.orderBy(products,["price","name"],["desc","asc"]);
console.log(obj5); //[ { name: 'iPhone 7 Plus 128G', price: 5899.8 },
//{ name: 'HuWei 荣耀8', price: 1899.8 },
//{ name: 'ZTE U880', price: 899.8 } ]//6、查找价格为1899.8的产品的key
var obj6=_.findKey(products,{price:1899.8});
console.log(obj6);   //1
复制代码

API的使用非常简单,但需要注意版本,可以现查现用,API地址:https://lodash.com/docs/4.17.2 

5.8、参数

5.8.1、URL中的参数占位

Checks route params (req.params), ex: /user/:id

127.0.0.1:3000/index,这种情况下,我们为了得到index,我们可以通过使用req.params得到,通过这种方法我们就可以很好的处理Node中的路由处理问题,同时利用这点可以非常方便的实现MVC模式;

//获得产品根据Id
router.get('/:id/:category',function(request,res,next){res.send(request.params.id+","+request.params.category);
});

运行结果:

5.8.2、URL中的QueryString

Checks query string params (req.query), ex: ?id=12

127.0.0.1:3000/index?id=12,这种情况下,这种方式是获取客户端get方式传递过来的值,通过使用req.query.id就可以获得,类似于PHP的get方法;

router.get('/:id',function(request,res,next){res.send("name:"+request.query.name);
});

运行结果:

5.8.3、HTTP正文中的参数

 在post请求中获得表单中的数据。

Checks urlencoded body params (req.body), ex: id=

127.0.0.1:300/index,然后post了一个id=2的值,这种方式是获取客户端post过来的数据,可以通过req.body.id获取,类似于PHP的post方法;

页面:

<!DOCTYPE html>
<html><head><title><%= title %></title><link rel='stylesheet' href='/stylesheets/style.css' /></head><body><h1><%= title %> - 产品列表</h1><table border="1" width="80%"><tr><th>序号</th><th>名称</th><th>价格</th></tr><%pdts.forEach(function(pdt,index){%><tr><td><%=index+1%></td><td><%=pdt.name%></td><td><%=pdt.price%></td></tr><%});%></table><ul><% for(var i=0; i<pdts.length; i++) {%><li><%=pdts[i].name%></li><% } %></ul>
<p><%if(typeof msg!="undefined"){%><%=msg%><%}%>
</p><form action="pdt/add" method="post"><p>名称:<input name="name" /></p><p>价格:<input name="price" /></p><button>添加</button></form></body></html>

View Code

代码:

复制代码
router.post('/add',function(request,res,next){var entity={name:request.body.name,price:request.body.price};products.push(entity);//将product视图与指定的对象渲染后输出到客户端res.render('product', { title: '天狗商城', pdts:products,msg:"添加成功"});
});
复制代码

结果:

5.9、JSON

如果需要Node.js向外提供返回JSON的接口,Express也是非常方便的,可以使用原来在浏览器中使用到的JSON对象,这是一个浏览器内置对象在服务可以直接使用:

将对象序列化成字符:

复制代码
            //对象var rose={"name":"Rose","weight":"65"};//序列化成字符串var str=JSON.stringify(rose);alert(str);
复制代码

结果:

反序列化,将字符转换成对象:

            //将字符串转换成JavaScript对象var markStr='{"name":"mark","weight":"188"}';var mark=JSON.parse(markStr);alert(mark.name+","+mark.weight);

结果:

Express已经封装了一个json方法,直接调用该方法就可以序列化对象:

/* 产品 */
router.get('/rest', function(req, res, next) {res.json(products);
});

运行结果:

 

六、RESTful(表述性状态转移)

REST是英文Representational State Transfer的缩写,中文称之为“表述性状态转移”
基于HTTP协议
是另一种服务架构
传递是JSON、POX(Plain Old XML)而不是SOAP格式的数据
充分利用HTTP谓词(Verb)
侧重数据的传输,业务逻辑交给客户端自行处理

REST是一种分布式服务架构的风格约束,像Java、.Net(WCF、WebAPI)都有对该约束的实现,使URL变得更加有意义,更加简洁明了,如:

http://www.zhangguo.com/products/1 get请求 表示获得所有产品的第1个

http://www.zhangguo.com/products/product post请求 表示添加一个产品

http://www.zhangguo.com/products/1/price get请求 表示获得第1个产品的价格

http://www.zhangguo.com/products/1 delete请求 删除编号为1的产品

REST设计需要遵循的原则
网络上的所有事物都被抽象为资源(resource);
每个资源对应一个唯一的资源标识符(resource identifier);
通过通用的连接器接口(generic connector interface)对资源进行操作;
对资源的各种操作不会改变资源标识符;
所有的操作都是无状态的(stateless)

谓词
GET
表示查询操作,相当于Retrieve、Select操作
POST
表示插入操作,相当于Create,Insert操作
PUT
表示修改操作,相当于Update操作
DELETE
表示删除操作,相当于Delete操作

其它还有:

NodeJS+Express可以很容易的实现REST

application/x-www-form-urlencoded

multipart/form-data

application/json

res.setHeader(‘Content-Type’, ‘application/json;charset=utf-8’);  

示例代码cars.js:

复制代码
var express = require('express');
var router = express.Router();
var _= require('lodash');var cars=[];
cars.push({id:201701,name:"BMW",price:190,speed:"210km/h",color:"白色"});
cars.push({id:201702,name:"BYD",price:25,speed:"160km/h",color:"红色"});
cars.push({id:201703,name:"Benz",price:300,speed:"215km/h",color:"蓝色"});
cars.push({id:201704,name:"Honda",price:190,speed:"170km/h",color:"黑色"});
cars.push({id:201705,name:"QQ",price:130,speed:"210km/h",color:"白色"});/* Get */
/*获得所有汽车*/
/*url /cars/*/
router.get('/', function(req, res, next) {res.json(cars);
});/*Get*/
/*获得汽车通过id*/
/*url:/cars/:id  */
router.get('/:id', function(req, res, next) {//从路径中映射参数,转换成数字var id=parseInt(req.params.id);var car=_.find(cars,{id:id});res.json(car);
});/*Post*/
/*添加汽车*/
/*url:/cars/car  */
router.post('/car', function(req, res, next) {var car=req.body;  //从请求正文中获得json对象car.id=_.last(cars).id+1;  //将编号修改为最后一辆车的编号+1cars.push(car);  //将汽车对象添加到集合中res.json(car);  //将添加成功的车以json的形式返回
});/*Put*/
/*修改汽车*/
/*url:/cars/car  */
router.put('/car', function(req, res, next) {var car=req.body;  //从请求正文中获得json对象
      console.log(req.body);var index=_.findIndex(cars,{id:parseInt(car.id)});  //根据id获得车在集合中的下标
      cars[index]=car;  //替换原对象//res.json(car);  //将修改后的车以json的形式返回res.send({status:"success", message:"更新成功!"});  
});/*Delete*/
/*删除汽车*/
/*url:/cars/:id  */
router.delete('/id/:id', function(req, res, next) {//获得url中的编号参数var id=parseInt(req.params.id);var index=_.findIndex(cars,{id:id});  //根据id获得车在集合中的下标cars.splice(index,1);   //在cars数组中删除下标从index开始的1条数据res.send({status:"success", message:"删除成功!"});  
});module.exports = router;
复制代码

示例代码app.js:

复制代码
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');var index = require('./routes/index');
var users = require('./routes/users');
var pdts = require('./routes/product');
var task = require('./routes/task');
var cars = require('./routes/cars');var app = express();//指定视图引擎为ejs
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));app.use('/', index);
app.use('/users', users);
app.use('/pdt', pdts);
app.use("/task",task);
app.use("/cars",cars);// catch 404 and forward to error handler
app.use(function(req, res, next) {var err = new Error('Not Found');err.status = 404;next(err);
});// error handler
app.use(function(err, req, res, next) {// set locals, only providing error in developmentres.locals.message = err.message;res.locals.error = req.app.get('env') === 'development' ? err : {};// render the error pageres.status(err.status || 500);res.render('error');
});module.exports = app;
复制代码

/* Get */
/*获得所有汽车*/
/*url /cars/*/

/*Get*/
/*获得汽车通过id*/
/*url:/cars/:id */

/*Post*/
/*添加汽车*/
/*url:/cars/car */

 

参数中的json格式一定要使用标准格式,注意引号,注意Content-Type,默认的Content-Type类型是:application/x-www-form-urlencoded

/*Put*/
/*修改汽车*/
/*url:/cars/car */

/*Delete*/
/*删除汽车*/
/*url:/cars/:id */

node.js跨域

修改app.js文件拦截所有的请求,修改头部

复制代码
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.all('*', function(req, res, next) {res.header("Access-Control-Allow-Origin", "*");res.header("Access-Control-Allow-Headers", "content-type");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");if(req.method == "OPTIONS") {res.send("200");} else {next();}
});
复制代码

结果:

七、示例下载

git:https://coding.net/u/zhangguo5/p/NodeJS001/git

git:https://coding.net/u/zhangguo5/p/NodeJSExpress/git

八、作业

8.1、请安装好node.js环境,测试版本,在控制台写一个方法用于计算1-100间的所有能被3整除的数,并调用。

8.2、请将8.1中的方法单独存放到一个math.js文件中,同时在math.html页面与node的控制台中调用

8.3、在开发工具IDE中集成node.js开发环境,创建一个node.js项目,向控制台输出“Hello World!”

8.4、使用记事本在c:\根目录下写一个server.js文件实现一个最简单的web服务器,请求时响应当前系统时间。

8.5、将8.4的功能在IDE中完成,请注意端口号不能被占用,如果提示占用错误可以修改端口号为1025-65535之间

8.6、完成一个图书管理的功能,图书包含(编号,名称,作者,图片,价格),实现:

a)、非AJAX的CRUD,使用Node.js+Express+ejs的动态技术。

b)、AJAX的CRUD,使用Node.js+Express+jQuery+HTML技术实现。当然也可以使用Vue2+axios。

c)、使用RestFul风格的服务完成第个作业,get,post,delete,put请。

九、视频

https://www.bilibili.com/video/av17977069/

https://www.cnblogs.com/best/p/6204116.html

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. Node.js发送视频流

    Node.js中的流 Node.js的流(Stream) API 非常强大,它是处理流数据的抽象接口。流可以看成是一种数据的集合,但它并不是一下子全部读到内存里面,而是一块一块地去产生、消耗,这种方式最显而易见的好处是可以方便地处理大文件。数据流可以是可读流、可写流,实际上Node.js中的…...

    2024/5/1 17:18:43
  2. node.js在2018年能继续火起来吗?我们来看看node.js的待遇情况

    你知道node.js是怎么火起来的吗?你知道node.js现在的平均工资是多少吗?你知道node.js在2018年还能继续火吗?都不知道?那就来看文章吧,多学点node.js,说不定以后的你工资就会高于nodejs的平均工资了,下面就一起来看这篇文章吧首先我们先来看node.js是怎么火起来的:在Nod…...

    2024/5/1 7:40:17
  3. 给大家安利一个nodeJS的教学视频

    最近再学nodeJS,于是网上找了一些视频资源。有的是老师有口音吐字不清晰,有的视频过于模糊,有的讲的磨磨唧唧但是---->意外的发现了这个视频,良心视频!!!教程业界良心,清晰度以及流畅度都很好,讲解有分主次,从不拖泥带水推荐给大家https://www.rails365.net/playl…...

    2024/5/1 5:23:04
  4. 神奇的网站

    (1)恶作剧大合集1. 在线抠图、证件照生成器 :t.cn/A67EE9UQ2.爱情小说生成器 :http://t.cn/ExN4qpW3.Cp短打生成器 :http://t.cn/Aid6pD1l4.爱豆翻牌体验器:http://t.cn/EoTPp7G5.口罩头像生成器:http://t.cn/A6vsVTFl6.今日吃什么:http://t.cn/zjgiYLq7.记仇表情生成器:http…...

    2024/4/24 12:59:44
  5. iOS开发中CocoaPods使用及常见问题

    1、安装过程 1、更新系统 Ruby 环境 # 这一步骤需要科学上网 $ sudo gem update --system# 查看已安装的 Ruby 版本(最新版本:3.0.6,截止20200430) $ gem -v2、 安装 CocoPods 前先替换镜像源 默认的镜像资源服务器被天朝给墙了。所以需要先更换源地址,然后再安装。 移除原…...

    2024/5/1 6:13:34
  6. IT行业会不会淘汰

    这个IT行业里,大部分人能找到自己适合的岗位,适合自己的工资,但部分人还是很迷茫,不知道自己适不适合这个行业,所以很害怕,当你看完下面这组数据,你就不会这么担心了 一目了然,我们所看见的扇形图,IT居然占了百分之35.而且每年的IT人才需求几乎达到2000万人数,这不仅…...

    2024/5/1 11:39:58
  7. 基金业务介绍

    1.基金基础概念 1.1.概念 证券投资基金是指通过发售基金份额,将众多投资者的资金集中起来,形成独立资产,由基金托管人托管,基金管理人管理,以投资组合的方法进行证券投资的一种利益共享、风险共担的集合投资方式。 证券投资基金是一种间接的证券投资方式。基金管理公司通过…...

    2024/5/1 18:04:49
  8. 视频豪横时代,应用如何快速构建视频点播能力?

    QuestMobile2020数据显示,疫情发生以来,每个网民每天花在移动互联网的时长比年初增加了21.5%,对于视频类应用增长尤为突出。而短视频用户规模已超8.5亿,用户使用时长在移动互联网用户使用总时长占比已达10.5%,仅次于社交与长视频。我们已经到了视频+时代,视频正在成为一个…...

    2024/5/1 18:20:58
  9. 图计算,让数据间的关系无处可藏【社区分切篇】

    社区,即一群拥有相似特征的点,社区内的点连接紧密,社区间稀疏连接。我们可以把同一公司的同事看作是一个社区内的点,他们从事同一行业,可能有相似的教育背景,由于 工作需要,他们之间要进行频繁的沟通。而不同的公司就像是两个不同的社区,他们之间可能存在着业务往来,但…...

    2024/4/24 12:59:39
  10. 泡着枸杞写bug的三流程序员凭什么逆袭到一线大厂?

    大多数互联网的从业者都有一个梦想:进大厂。因为不仅可以享受较好的福利待遇,也能与更优秀的人一起共事,获得更专业、更快速的成长。最近经常有朋友提及想要入门编程学习,该如何学习?关于编程学习,各种语言网上的资料很多,不过貌似大部分都不太适合初学者。 我曾经是一名…...

    2024/5/1 18:08:04
  11. 大三上学期学习总结

    ​ 一. 前言 二. 面试过程 三. 上班开始与结束 四.软考过程 五.英语四级 六.第一次做项目 七.再次考虑做下一个项目 八.想要减肥 九.最后的感想 一.前言 大三学期快要完了,记录一下这学期的感受,首先,感觉这学期过得非常快,一转眼,就已经快要结束了,只剩下几门考试…...

    2024/5/1 12:18:41
  12. ‘AI相面’不可靠 那识别性格呢

    近日,《自然》杂志发表了一篇论文,利用人工智能研究了性格和面部特征之间的关系。研究团队征集了12000多名志愿者,利用人工智能技术通过31000多张自拍学习了128种人脸特征,并且将志愿者的人格特征分为五类,即责任心、神经质、外向性、亲和性、开放性。结果显示,AI在基于静…...

    2024/4/24 12:59:36
  13. 移动支付的迅速发展会对我们的生活产生什么影响

    我认为移动支付对我们生活的影响是颠覆性的! 首先:移动支付的发展趋势不可逆转,手机技术、互联网技术,安全技术,以及伴随新生代的成长的支付宝、微信的日益成熟,让移动支付的普及水到渠成(新一代人对移动支付不陌生,接受力度强)。 第二:移动支付技术的多样性也为移动…...

    2024/5/1 18:21:38
  14. HBuilderX “未检测到手机或浏览器” (手机)

    1.打开HBuilderX安装目录下的HBuilderX\plugins\launcher\tools\adbs文件夹。 2.删除除了文件夹外(1.0.31、1.0.36)的其他三个文件。 3.把1.0.31目录下的文件拷贝到HBuilderX\plugins\launcher\tools\adbs文件夹中,直接覆盖。 以上操作完成后重启HBuilderX,查看是否检测出手…...

    2024/5/1 6:15:30
  15. #学习笔记#HttpServletResponse类

    HttpServletResponse类 1、HttpServletResponse的作用HttpServletResponse与HttpServletRequest一样,每次请求进来,tomcat服务器都会创建一个Response对象传递给servlet程序去使用,我们如果需要设置返回给客户端的信息,都可以通过HttpServletResponse对象进行设置 HttpServ…...

    2024/5/1 6:46:20
  16. Shell语言目录

    Shell目录 1、Bash简单的功能 2、Shell中的变量使用...

    2024/5/1 9:46:51
  17. 实用类

    一.枚举 枚举指由一组固定的常量组成的类型。 (1)枚举的优点 类型安全,易于输入,代码清晰 枚举的语法如下:调用了枚举类的无参构造,每个枚举常量时枚举类的一个对象。 包装类 1.包装类把基本类型转化为对象, 2.包装类的作用 (1)提供了一系列实用的方法 (2)集合不允许…...

    2024/4/15 4:17:16
  18. 创新实训博客(19)——Android开发中在Layout中动态添加组件并设置响应事件

    前言以博文展示的页面为例子:每个博客都有自己对应的标签,而且标签的数量可能并不是一个。按照原来的那种绘制界面的方式来说,只能是静态数量的组件个数然后设置对应的显示效果。在Vue.js开发中,Vue自身提供了v-for来遍历添加,而且html和css搭配起来也很方便。但是在Andro…...

    2024/4/15 4:17:15
  19. java 内存分配

    内存分配,主要指的是在堆上的分配,一般的,对象的内存分配都是在堆上进行,但现代技术也支持将对象拆成标量类型(标量类型即原子类型,表示单个值,可以是基本类型或String等),然后在栈上分配,在栈上分配的很少见,我们这里不考虑。Java内存分配和回收的机制概括的说,就…...

    2024/4/15 4:17:13
  20. Hive实战 | 蚂蚁森林案例

    前两天学习了 Hive,本篇博客将以案例的形式对之前学过的知识进行应用。 场景描述 本案例的场景是关于蚂蚁森林,没错,就是支付宝里的蚂蚁森林。首先这里有两张表。一张记录了用户每天的蚂蚁森林低碳生活领取的记录流水。table_name: user_low_carbon 字段如下: user_id da…...

    2024/4/15 4:17:13

最新文章

  1. 美国国防部数据网格参考架构概述(上)

    文章目录 前言一、概述二、DRMA基本概念三、DRMA的能力视图与运行视图前言 美国国防部正在努力成为“一个以数据为中心的组织,以速度和规模优势使用数据,从而获得作战优势并提高效率。”企业数据网格服务(又称数据集成层)是美国国防部首席数字与人工智能办公室(CDAO)为支…...

    2024/5/1 19:49:47
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. centos后台运行使用nohup命令

    nohup ./my_script.sh & nohup命令运行后如何关闭 nohup 命令用于在用户注销系统后继续运行指定的命令。如果您想关闭使用 nohup 运行的进程&#xff0c;您可以使用 kill 命令。 首先&#xff0c;您需要找到 nohup 运行的进程的进程ID&#xff08;PID&#xff09;。可以使…...

    2024/5/1 16:06:39
  4. FastAPI Web框架教程 第1章 快速上手

    1.1 fastapi介绍 简介&#xff1a; FastAPI 是一个高性能&#xff0c;易于学习&#xff0c;高效编码&#xff0c;生产可用的Python Web异步框架 FastAPI 适合来写API&#xff0c;使用 Python 3.6 并基于标准的 Python 类型提示 核心特性&#xff1a; 速度快&#xff1a;可…...

    2024/5/1 13:49:52
  5. Stable Diffusion的界面参数详解

    Stable Diffusion作为一款强大的文本到图像生成模型,其界面参数是用户与模型进行交互的重要桥梁。这些参数不仅影响着模型的生成效果,还能够帮助用户更加精准地控制生成图像的风格、内容等。本文将详细介绍Stable Diffusion的界面参数,帮助用户更好地理解和应用这一工具。 …...

    2024/4/30 7:06:56
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/1 17:30:59
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/30 18:14:14
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/29 2:29:43
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/30 18:21:48
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/30 9:43:09
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/29 20:46:55
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/30 22:21:04
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/1 4:32:01
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/30 9:42:22
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/30 9:43:22
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/30 9:42:49
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57