
Window 上安装Nodejs
你可以采用以下两种方式来安装。
1、Windows 安装包(msi)
32 位安装包下载地址 : >
64 位安装包下载地址 : >
本文实例以 v01026 版本为例,其他版本类似, 安装步骤:
步骤 1 : 双击下载后的安装包 v01026,如下所示:
和平时安装其他软件一样等待安装完成!
步骤 2: 检测PATH环境变量是否配置了Nodejs,点击开始=》运行=》输入"cmd" => 输入命令"path",输出如下结果:
PATH=C:\oraclexe\app\oracle\product\1020\server\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v10\;
c:\python32\python;C:\MinGW\bin;C:\Program Files\GTK2-Runtime\lib;C:\Program Files\MySQL\MySQL Server 55\bin;C:\Program Files\nodejs\;
C:\Users\rg\AppData\Roaming\npm
我们可以看到环境变量中已经包含了C:\Program Files\nodejs\
步骤 3: 检查Nodejs版本
2、Windows 二进制文件 (exe)安装
32 位安装包下载地址 : >
64 位安装包下载地址 : >
安装步骤
步骤 1 : 双击下载的安装包 Nodeexe ,将出现如下界面 :
步骤 2:点击 Run(运行)按钮将出现命令行窗口:
步骤 3 :版本测试
进入 nodeexe 所在的目录,如下所示:
如果你获得以上输出结果,说明你已经成功安装了Nodejs。
1、起源
Nodejs起源于2009年3月。最初Ryan Dahl是为了构建一个高性能的文本服务器,而nodejs是他在寻找一种更高提升web服务器性能发现的,事件驱动、非阻塞I/O这种方式能更好的提高性能。随着Nodejs的不断发展,Nodejs渐渐演变成一种构建网络应用的基础框架,并发展为一个不共享任何资源的单线程、单进程系统,但包含了很适合网络的库,这样Nodejs就为构建大型分布式应用提供了基础设施。他们的目标都是为了构建快速、可伸缩的网络应用平台。它自身非常简单、采用通信协议来组织许多的Node,非常容易通过拓展来达成构建大型网络应用的目的。
2、nodejs简介
Nodejs是一个可以快速构建网络服务及应用的平台。该平台的构建是基于Chrome'sJavaScriptruntime,也就是说,实际上它是对GoogleV8引擎(应用于GoogleChrome浏览器)进行了封装。Nodejs不是一个js应用而是一个js运行平台。其是由C++编写而成。但是Nodejs是一个后端的运行环境。因此你可以编写系统级或者服务器端的js让Nodejs帮你执行。
3、优势
1)nodejs采用事件驱动、异步编程,为网络服务而设计。
2)nodejs采用非阻塞模式的IO处理,可以使nodejs在相对低系统资源耗,拥有出色的负载能力,非常适合用作依赖其它IO资源的中间层服务。
3)nodejs轻量高效,可以认为是数据密集型分布式部署环境下的实时应用系统的完美解决方案。
4)使用nodejs配合CoffeeScript 写异步 *** 作链非常便利,相比之下Tornado无论是写命名函数的回调,还是 yield 一个 Task 都没那么自然。
最近本人在学习开发NodeJs,使用到express框架,对于网上的学习资料甚少,因此本人会经常在开发中做一些总结。
Checks route params (reqparams), ex: /user/:id
Checks query string params (reqquery), ex: id=12
Checks urlencoded body params (reqbody), ex: id=
1、例如:127001:3000/index,这种情况下,我们为了得到index,我们可以通过使用reqparams得到,通过这种方法我们就可以很好的处理Node中的路由处理问题,同时利用这点可以非常方便的实现MVC模式;
2、例如:127001:3000/indexid=12,这种情况下,这种方式是获取客户端get方式传递过来的值,通过使用reqqueryid就可以获得,类似于PHP的get方法;
3、例如:127001:300/index,然后post了一个id=2的值,这种方式是获取客户端post过来的数据,可以通过reqbodyid获取,类似于PHP的post方法;
下面举例介绍下这三个方法:
如下一个testhtml代码
<form action="/index" method="get">
<input type="text" name="login_name"/>
<input type="submit" value="Sign In" />
</form>
在nodeJs中我们要自定义>
文件 I/O 是由简单封装的标准 POSIX 函数提供的。 通过 require('fs') 使用该模块,所有的方法都有异步和同步的形式。
异步形式始终以完成回调作为它最后一个参数,传给完成回调的参数取决于具体方法,但第一个参数总是留给异常,如果 *** 作成功完成,则第一个参数会是 null 或 undefined。
当使用同步形式时,任何异常都会被立即抛出。 可以使用 try/catch 来处理异常,或让它们往上冒泡。
异步方法不保证执行顺序。 所以下面的例子容易出错:
fsstat 可能在 fsrename 之前执行,正确的方法是把回调链起来。
推荐开发者使用这些函数的异步版本。 同步版本会阻塞整个进程,直到它们完成(停止所有连接)。
fsopen(path, flags[, mode], callback)参数如下:
flags可以是:
[注意]使用'rs+'模式不会使fsopen()进入同步阻塞调用。如果那是你想要的,则应该使用fsopenSync()。
文件的回调函数中的第二个参数fd代表文件标识,与定时器标识类似,用于标识文件,且随着文件的打开顺序递增。
fsopenSync(path, flags[, mode])
fsopen() 的同步版本。 返回一个表示文件描述符的整数。
fsread(fd, buffer, offset, length, position, callback)参数如下:
由于使用read()方法,会将文件内容读取buffer对象中,所以需要提前先准备一个buffer对象。
fsreadSync(fd, buffer, offset, length, position)
fsread() 的同步版本,返回 bytesRead 的数量
fswrite(fd, buffer, offset, length[, position], callback)参数如下:
[注意]多次对同一文件使用fswrite且不等待回调,是不安全的。对于这种情况,强烈推荐使用 fscreateWriteStream。
当我们要对打开的文件进行写 *** 作的时候,打开文件的模式应该是读写模式。
fswrite(fd, data[, position[, encoding]], callback)
该方法写入data到fd指定的文件。如果data不是一个Buffer实例,则该值将被强制转换为一个字符串。
不同于写入 buffer,该方法整个字符串必须被写入。不能指定子字符串,这是因为结果数据的字节偏移量可能与字符串的偏移量不同。
fswriteSync()
fswrite() 的同步版本,返回写入的字节数。
fsclose(fd, callback)参数如下:
一个文件被 *** 作后,要及时将该文件关闭
fscloseSync(fd)
fsclose(fd, callback)的同步版本,返回undefined
首先在 >
首次请求服务端会在响应的 headers 里边种下 Cookie ,再次请求服务,浏览器就会带上 Cookie ,
然后这样会存在一些问题,首先 Cookie 不能存太大,设置在浏览器端可以看到可以被修改,不是那么的安全。
正因为 Cookie 的弊端,所以我们能不能把重要信息保存在服务器, Cookie 中值保留简单的一个ID将来用于去服务器获取对应信息
那么接下来看下 Koa 中如何使用 Session-cookie 模式
当 >
nodejs中sequelize的create方法默认执行语句中的id,如何去掉(我的数据库不需要设置id字段)
用的nodejs web框架是团队统一的hapijs,而数据库依然是mysql,ORM 框架选用有着6000+ stars 的 sequelizejs,hapi-sequelize插件对sequelize做了很简单的封装,可以让我们很自如地在hapi中游走,比如配置和调用。
看文章之前,强烈建议先把项目拉取下来!案例来自小弟的开源项目 「项目Github」
文章内容只是个人学习的一些总结经验,不具有权威性,这是 Node 服务端的实现,后面会写前端的实现
常见的 Token 验证方式种:
推荐阅读:
JWT 超详细分析
说一说几种常用的登录认证方式,你用的哪种
推荐阅读:
JSON Web Token 入门教程
JSON Web Token - 在Web应用间安全地传递信息
首先我们先安装 jsonwebtoken 和 express-jwt 这两个中间件
jsonwebtoken : 用于生成 Token 。它也有解析 Token 的功能
express-jwt : 用于解析 Token(比 jsonwebtoken 解决方便) , 它把解析之后的数据,存放到 requsetuser 中
如果你看了上面 JWT 介绍的文章,就知道 JWT 是由三部分组成的,分别是 载荷(Payload) 、 头部(Header) 、 签名(Signature) 。
jsonwebtoken 给我们提供了 sign(payload, secretOrPrivateKey, [options, callback]) 方法。sign 方法对应的其实就是 JWT 签名(Signature) 的动作
payload:荷载 ,参数类型:对象secretOrPrivateKey:自定义的密钥,密钥属于敏感信息。参数类型:字符串options:可以配置 header 、荷载、指定算法类型。参数类型:对象callback:回调
眼尖的朋友应该发现, payload 和 options 两个 参数 都可以配置荷,下面有例子。根据自己的习惯选择就好
Payload 部分 JWT 规定了7个官方字段,这些字段都是可选字段。可直接以对象的形式传给 payload 参数。
options 中也可以接受以上七个字段,不过字段名称有所区别。
除此之后 options 提供了 algorithm 和 header ,分别对应使用的加密算法和 JWT 的 Header 部分,其实 algorithm 应该也是属于 Header 部分的。
说了这么多,其实我们一般常用的只有 exp(expiresIn) 和 algorithm 这两个字段,
例子一:
token 的有效时间是配置在 option 里
例子二:
我们也可以在 payload 里配置有效时间
jsonwebtoken 除了生成 token 外,还提供了解析验证 token 的方法, jwtverify(token, secretOrPublicKey, [options, callback]) 。
这里就不演示了, 感兴趣的朋友可以参考文档: 「JsonWebToken」
express-jwt 是针对 express 框架开发的 JWT Token 验证中间件。我先来简单说以下它的用法。
主要有两种方式,一种是哪些请求需要验证就往哪里加验证;另外一种是先给全部请求加上验证,再给不需要验证的请求配置 白名单 。
方式一:
看完上面的例子,很显然不符合我们的逾期,一个正常的项目有个几十个 api 是分分钟的事。我们不可能一个个给他加上检验
方式二:
这种方式是不是方便很多,而且更美观,维护起来也更方便
Token 解析出来的用户信息,默认存放在 requser , 可以直接 requseruserId 来使用生成 Token 时填进去的用户id
你也通过 requestProperty 和 resultProperty 来设置用户信息存放的对象。
这里就不展开,详细文档参考: express-jwt
可以使用 appuse() 来注册处理验证不通过的情况
到这里 Token 的生成、验证、检验不通过错误处理就完成了。 Token 生成一般是在登录之后生成,并返回给前端,前端拿到 Token ,并在每次请求 api 的时候携带上 Token , Token 就相当于这个用户的身份,不要轻易泄露。
Token一旦签发,不能主动让它失效,只能等待它有效期过才能失效。也就是说就算你修改了密码,之前的 Token 也还是有效的。你可以修改后端生成 Token 时使用的密钥,不让之前的 Token 检验通过,但是这就表示之前所有生成 Token 都失效了,做不到针对某个用户进行注销。这显然也不合适的。 所以用户修改密码时,前端一般都要清除之前保存的 Token,再重获取新的 Token
有朋友应该会想到在后端把 Token 储存起来,每一个用户对应一个 token。修改账号时,再生成一个新的 Token 覆盖之前的 Token,但这就违背了使用 Token 的目的,Token 的使用很大程度就为了减少服务器的压力。把尽可能多的信息存储在客户端而不是服务端。
使用 Token 可以防御 CSRF 攻击,之前写过一篇关于网络安全的文章,感兴趣的朋友可以看一下 「XSS 攻击、CSRF 攻击、SQL 注入、流量劫持(DNS 劫持、>
以上就是关于如何运行nodejs环境全部的内容,包括:如何运行nodejs环境、什么是node.js、nodejs 中express框架中request有哪些属性和方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)