一、Express框架
前面的章节已经介绍过了,可以使用npm来安装nodejs模块。具体 *** 作请参照以前写的nodejs概论。
Express是一个nodejs的web开源框架,用于快速的搭建web项目。其主要集成了web的>
使用方法,在cmd中打开你所想创建web项目的路径。然后输入
Express appname
即可创建一个名为appname的web项目。控制台打印结果
在cmd中进入appname文件夹输入
node appnamejs
返回结果如下图,表示安装成功!
在项目开发中经常会出现这样的问题
此错误表示没有安装相关模块,解决办法是在cmd上打开项目文件夹,输入
npm install express
安装成功后会在本文件路径下生成一个node_modules,里面包含了Express框架代码。
其他模块也可用类似的方法进行安装,安装后的路径同样是在node_modules下。
二、jade模块
jade是一款高性能、简洁易懂的模板引擎。可通过jade来编写html文件。
jade类似一个用于快速编写html的语言,其编写后的文件后缀为jade。
以下为文件的内容
在cmd中输入,压缩的过的可以通过加-P来不压缩,如果每次更改模版都要打命令行一次很麻烦是不是,我们可以通过加上jade -P -w jadejade 加上一个-w来开启监视模式,每次更改模版,html文件都会自动编译咯
生成后的html文件如下:
在jada文件中是可以使用for循环和if判断语句的,可以让你体会类似JSP的<%%>和php的<php></php>在网页上输出数据的快感。
三、forever模块
nodejs作为>
1后台服务运行,监控运行日志,以及>
2确保项目的正常安全运行,Nodejs的启动命令node,很大程度无法满足运行需求;
Nodejs的forever模块在第二点就可以起到很大的作用,同时其拥有监控文件更改、自动重启等功能。
forever模块的使用方法有两种:1在命令行中使用
forever -l foreverlog -o outlog -e errlog appjs
-l foreverlog -o outlog -e errlog分别指定了forever的运行日志,脚本流水日志,脚本运行错误日志,启动后将在本文件夹下产生outlog、errlog文件。
2在编码中require forever模块使用。
四、SocketIO模块
SocketIO模块主要功能是将WebSocket协议应用到所有浏览器。主要用于实时的长连接多求情项目中。
例如:在线联网游戏,实时聊天、实时股票查看、二维码扫描登录等。
安装方法仍然是在cmd在中输入npm install socketio
如何使用SocketIO来创建一个项目。
需要分别实现服务端和客户端的逻辑:
先创建一个服务端的nodejs脚本index_serverjs
var app = require('>
其中,socketemit()为Socket发送消息的函数,第一个参数表示发送消息的key值,第二个参数为发送消息的内容,也就是发送的数据。
Socket。on()为Socket接收消息的函数,第一个参数为接收消息的可以值,第二个参数为回调函数,其中回调函数携带的参数为接收消息所发送的数据。
接下来web前端如何使用JavaScrit 来连接Socket服务器。
新建一个index_clienthtml
<script type="text/javascript" src="socketjs"></script>
<script type="text/javascript"> var socket = ioconnect('>
<script type="text/javascript" src="socketjs"></script>加载已经安装好的Socketio的本地JavaScrit文件。
var socket = ioconnect('>
socketio详细请参阅 >
五、request模块
request模块为开发者提供了一种简单访问>
安装:
npm install requset
request模块基本上覆盖了所有的>
get和post的区别
get:
1使用get向服务器发出和接收的请求会附在url之后。类似:>
2get请求不能超过1024个字节。
post没有限制,也不会附在url上。
接下来做一个简单的实例
get实例:
首先新建一个服务器app_getjs
var >
再建一个发送求情的request_getjs文件
var request=require('request');
requestget(">
在CMD中运行app_getjs,运行成功后,再打开一个cmd(之前的cmd不要关闭),执行request_getjs文件。
执行后的结果如下
hello world
GET
可以看出,通过requestget方法访问
>
var >
然后再新建一个request_postjs
var request=require("request");
requestpost('>
像上面一样在cmd中执行后显示的结果如下:
D:\nodejs\src\request>node request_postjs
{"name":"ermu","book":"nodejs"}
POST
request post提交了一个json对象{"name":"ermu","book":"nodejs"}而服务器接通过获取该POST数据,然后返回客户端,同时将>
request post参数可以有两种传递方式。
其中,第一种是将url和form表单的数据作为json参数在request post传递。举例如下:
requestpost('url':'>
另一种是将url和form作为两个参数,上面的实例就是使用这种方法。
六、 Formidable模块
该模块的目的是为了解决文件上传。
在原生的nodejs模块中,提供了获取post数据的方法,但是并没有直接获取上传文件。
一、Token 一般是存放在哪里 Token 放在 cookie 和放在localStorage、sessionStorage 中有什么不同
localStorage生命周期是永久,除非主动清除localStorage信息,否则这些信息将永远存在。
存放数据大小为一般为5MB,而且它仅在客户端(即浏览器)中保存,不参与和服务器的通信。
// 1、保存数据到本地
// 第一个参数是保存的变量名,第二个是赋给变量的值
// 2、从本地存储获取数据
// 3、从本地存储删除某个已保存的数据
// 4、清除所有保存的数据
sessionStorage仅在当前会话下有效,关闭页面或浏览器后被清除。
存放数据大小为一般为5MB,而且它仅在客户端(即浏览器)中保存,不参与和服务器的通信。
// 1、保存数据到本地
// 第一个参数是保存的变量名,第二个是赋给变量的值
// 2、从本地存储获取数据
// 3、从本地存储删除某个已保存的数据
// 4、清除所有保存的数据
复杂数据存储
上面都是对于简单的数据类型的存储,但当要存储的数据是一个对象或是数组的时候,直接存储是不行的
这个时候,就需要转换数据格式。
存储数据前:利用JSONstringify将对象转换成字符串
获取数据后:利用JSONparse将字符串转换成对象
cookie机制:如果不在浏览器中设置过期事件,cookie被保存在内存中,生命周期随浏览器的关闭而结束,这种cookie简称为会话cookie。如果在浏览器中设置了cookie的过期事件,cookie会被保存在硬盘中,关闭浏览器后,cookie数据仍然存在,直到过期事件结束才消失。cookie是服务端发给客户端的特殊信息,cookie是以文本的方式保存在客户端,每次请求时都带上它
保存用户登录状态
跟踪用户行为
定制页面
创建购物车:使用cookie来记录用户需要购买的商品,再结帐的时候可以统一提交。(淘宝网就是使用cookie记录了用户曾经浏览过的商品,方便随时进行比较)
// 1、保存数据到本地
// 第一个参数是保存的变量名,第二个是赋给变量的值
//保存cookie
//参数:cookie名,cookie值,有效时长(单位:天)
//删除cookie
cookie缺点:
大小受限
用户可以 *** 作(禁用)cookie,使功能受限
安全性较低
有些状态不可能保存在客户端。
每次访问都要传送cookie给服务器,浪费带宽。
cookie数据有路径(path)的概念,可以限制cookie只属于某个路径下。
l
二、WebSocket 是怎么实现点对点通信和广播通信的?
Token 其实就是访问资源的凭证。
一般用户通过用户名和密码登录成功后,服务器将登录凭证做数字签名,加密之后得到的字符串作为token。
客户端主要存储方式:
WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。
现在,很多网站为了实现推送技术,所用的技术都是 Ajax 轮询。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出>
自动释放资源: 切换场景后,上一个场景中的资源,从内存中释放。
延迟加载资源: 意味着不用等待所有资源加载完毕,才显示场景。(快速切换场景,资源陆续在画面显示)
普通图,子层为一张spriteFrame。
创建方式:拖拽场景节点,到资源管理器。
精灵图,子层为多张spriteFrame。(精灵图合成软件:TexturePacker、Zwoptex)
打包时,将所在目录中的所有碎图,合成为图集。
数字为内容的图集。
动态字体:ttf
位图字体:fnt + png(存在于同一目录)
小型动画
模式: web audio、dom audio
*** 作流程:
(1)导出:文件 => 资源导出,选择 fire场景文件,输出assets目录的 zip压缩包。
(2)导入:文件 => 资源导入,选择压缩包源路径、解压路径,输出assets目录内容。
基于size mode,尽量去除spriteFrame无像素的部分,减小尺寸。
作用: 用于变换、子节点定位基准。
对摄像机、渲染组件的了解。
对widget、layout等UI组件的了解。
(1)创建动画的基本流程
(2)时间曲线(双击动画线,进入编辑窗口)
(3)事件管理(双击游标、加减按钮控制参数个数)
(4)脚本控制
碰撞组件(普通碰撞)
(1)editing——是否为编辑模式
(2)regenerate points——计算图形边界,自定生成控制点,数值为控制点的生成密度 / 准确度
(3)ctrl + 点击——删除控制点
(4)组件类型:矩形、圆形、多边形
(5)设置碰撞组(项目 => 项目设置 => 分组设置):
制定分组 => 匹配分组 => 碰撞组件所在节点上,设置所属分组
(6)脚本控制
Box2D物理引擎(高级碰撞)
(1)audioSource组件
(2)脚本控制
(1)定义 CCClass
(2)实例化
(3)判断类型
(4)构造函数(ctor)
(5)实例方法
(6)继承(extends)
(7)父构造函数
(8)完整声明属性
properties常用参数
(1)获得组件所在的节点
(2)获得其它组件
(3)获得其它节点及其组件
(4)访问已有变量里的值(通过模块访问)
(1)节点状态和层级 *** 作
(2)更改节点的变换(位置、旋转、缩放、尺寸)
(3)颜色和不透明度
(4)常用组件接口
ccComponent 是所有组件的基类,任何组件都包括如下的常见接口:
(1)创建新节点
(2)克隆已有节点
(3)创建预制节点
(4)销毁节点
(1)加载和切换
(2)通过常驻节点,进行场景资源管理和参数传递
(3)场景加载回调
(4)预加载场景
(1)资源属性的声明
(2)静态加载(在属性检查器里设置资源)
(3)动态加载
(4)加载远程资源和设备资源
(5)资源的依赖和释放
(1)监听事件
(2)关闭监听
(3)发射事件
(4)派送事件
(5)事件对象(回调参数的event对象)
(1)鼠标事件类型和事件对象
(2)触摸事件类型和事件对象
(3)其它事件
(1)动作控制
(2)容器动作
(3)即时动作
(4)时间间隔动作
(5)动作回调
(6)缓动动作
(1)XML> 以上就是关于webSocket粗谈全部的内容,包括:webSocket粗谈、如何使用GoEasy实现PHP与Websocket实时通信、nodejs内置模块有哪些等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力! 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)