zoukankan      html  css  js  c++  java
  • node.js的一些基本用法

    node
    为什么要学习node
    动态网页:数据进行交互,动态改变数据
    通过node了解前后端数据交互(后台如何返回接口)
    node的版本
    LIS稳定版本
    10.15.2
    大号版本
    小号版本
    补丁
    nodeJs和浏览器中的JavaSrcipt的区别
    在node中没有BOM和DOM的概念,所以不存在兼容模式
    在浏览器中没有node中的global、paprocess等属性
    node可以用来搭建服务器、数据库
    node可以用来调用底层的API,可以做文件的读写等操作
    node的优缺点
    优点
    高效、速度快、适合高并发的项目
    缺点
    不适合做大计算的项目
    node的交互模式
    进入
    node回车
    退出
    ctrl+c/2次
    ctrl+d/1次
    node如何运行js文件
    node 文件名
    node搭建简单服务器
    引入模块(node自带的是核心模块)
    var http = require("http")
    创建服务器
    http.createSever((req,res)=>{}).listen(9000)
    req用法
    req.requset
    请求
    req.url
    请求的地址
    req.methed
    请求的方式
    req.headers
    请求头
    req.body
    接收post传递数据的参数
    req.query
    接收get传递数据的参数
    req.request()
    接收任意方法传递数据的参数
    res用法
    res.write()
    回复响应信息(可以多次调用)
    res.end()
    回复响应信息(只可以一次调用,做结尾)
    res.statusCode
    设置状态码
    res.setheader
    设置响应头
    res.writeHead
    前两者的综合写法
    参数1:状态码
    参数1:响应头
    响应头的类型
    text/plain
    text/html
    text/css
    applieation
    模块化
    requireJS
    异步
    AMD
    seaJs
    异步
    CMD
    commonJs
    同步
    Common
    Es6 module
    同步
    import
    模块化规范
    如何导出模块、如何接收模块
    define-return-require
    module.exports-require
    export.defaule-import
    node模板分类
    核心模块
    自带模块、直接导入
    自定义模块
    一般带“/”路径
    第三方模块
    先安装再引入
    npm常用操作 [下载包]
    cnpm.install.package.json
    依赖安装
    cnpm install <包名> -g
    全局安装
    cnpm install <包名> --save -dev
    局部安装
    cnpm uninstall <包名>
    卸载
    cnpm update <包名>
    更新
    cnpm clear cache
    清除缓存
    向npm官网上传包
    创建项目文件夹
    目录下打开cmd
    npm init 回车到最后
    创建文件
    npm login (登陆npm账号)
    npm publish (上传)
    yarn
    cnpm install yarn -g
    yarn install
    相当于cnpm install
    yarn add <包名>
    相当于cnpm install <包名> -S
    yarn add <包名> -dev
    局部安装
    yarn upgrade <包名>
    更新
    yarn remore <包名>
    删除+jh
    day2
    url模块
    url.parse(path,true)
    将url转成对象,参数为true时会将qurey解析成一个对象
    url.format()
    将一个url object转成一个字符串.url
    url.resulve()
    生成一个相对或者绝对路径[第二个参数加“/”时为绝对路径]
    queryString模块
    qs.escape()
    转义
    qs.unescape()
    反转义
    qs.parse(字符串,“分隔符”,“赋值符”)
    字符串转对象
    qs.stringify(字符串,“分隔符”,“赋值符”)
    对象转字符串
    events模块
    on(eventName,cb)
    事件绑定
    setMaxlisteners(n)
    设置最大可绑定的函数数量
    removeListener(eventName,cb)
    事件移除,必须在事件触发前
    removeAllListener(eventName)
    移除所有事件
    emit(eventName,params)
    事件触发,与on事件一致,并填写参数
    http小爬虫
    引入模块和路径[cheerio模块可以让我们操作数据像jq一样]
    接收数据
    接收数据是一块一块接收的,接收时会触发data事件
    接收完毕后会触发data事件
    将请求到的数据封装到$中
    进行类似JQ的数据操作
    fs模块
    fs.stst()
    校验文件类型
    fs.stat("文件的路径",(err,stats)=>{if(!err){}})
    子主题 1
    stats.isFile()
    验证是不是一个文件
    stats.isDirectory()
    验证是不是一个文件夹
    fs.readFile()
    读取文件内容
    fs.readFile("文件的路径",(err,data)=>{})
    返回值是一个buffer文件,加空字符串可以将其转化为字符串
    fs.writeFile()
    将数据写入文件
    fs.writeFile("文件的路径","文件内容",(err)=>(){})
    appendFile()
    向文件追加内容
    appendFile("文件路径",“追加的内容”,(err)=>(){})
    fs.readdir("文件的路径",(err,data)=>{})
    列出文件夹的目录
    data
    文件的目录信息,是一个数组
    fs.rename()
    更改文件或文件夹的名称
    fs.renameeadFile("文件更改的名称",(err)=>{})
    路由
    根据用户请求的路径或参数返回不同的网页或数据
    前端路由
    根据路径的不同,渲染不同的页面,一般用来做单网页开发
    后端路由
    根据用户请求的路径或参数返回不同的页面或数据,一般用来定义接口
    搭建服务器,通过if判断实现不同路径下读些不同的数据
    day3
    socket
    概念
    网络上的两个程序通过一个双向的通信连续实现数据的交换,这个连接的一端称为一个socket,建立网络通讯连接至少要一对端口号(sockte),socket本质是编程接口(API)。对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,即socket编程接口
    Http是轿车,提供了封装或者现实数据的具体形式,socket是发动机,提供了网络通信的能力
    socket的使用过程
    服务器初始化socket,再与端口绑定,对端口进行监听(listen),调用accept阻塞,等待客户连接
    客户端初始化一个socket,并连接服务器(connect),客户端发送数据请求,服务器连接并处理请求,再将数据回应给客户端,客户端读取数据,最后关闭连接,一次交互结束
    socket的使用场景
    聊天室、多人聊天
    实时性比较高的消息推送
    客户端与服务器之间的通信
    聊天室逻辑
    net模块
    net所创建的服务器能持久储存数据,htp只能暂时存储
    服务器
    通过“connection”事件,建立与每个客户端的连接,并将每个客户端添加到数组中
    通过“data”事件,接收客户端信息
    通过数组的遍历,将消息发送给每个客户端
    通过id当客户端断开消息时,将其移出数组
    客户端
    通过new net.Socket()创建客户端
    通过readline模块在终端进行文件读写
    通过setEncoding(“utf8”)将buffer文件转为字符串
    通过“connect”方法连接服务器,参数为端口、ip地址
    通过“data”事件,接收服务器的数据
    通过“line”事件,在终端读写文件
    WebSocket
    允许服务器主动向客户端推送数据,只需完成一次握手,两者便可以创建持久性连接,并进行双向数据传输,(html5新增的通信协议)
    socket.io
    将WebSocket封装成一套API,屏蔽了细节差异和兼容性问题,实现了跨浏览器/跨设备进行双向数据通信
    单页面与多页面开发的区别
    单页面开发
    spa,只有一张web页面的应用,有一个初始化页面和多个页面模块组成。
    单页面跳转仅刷新局部资源,公共资源(js、、css等)仅需加载一次
    页面跳转
    使用js中的append/remove或show/hide的方式进行页面内容的更换
    数据传递
    可通过全局变量或参数传递,进行相互数据交互
    优势
    用户体验好
    页面切换的数据传递、页面的切换的动画都有较大的操作空间
    多页面开发
    MPA,多页面跳转需要刷新所有资源,每个公共资源需选择加载
    页面跳转
    使用window.location.href进行页面的跳转
    数据传递
    通过路径携带的数据传递方式,或者localstorage.cookie等存储方式
    优势
    适用于页面跳转较少、数据传递较少的项目开发
    非持久性连接和持久性连接
    持久性连接
    服务器在发出响应后保持TCP连续打开着,同一客户/服务器之间的后续请求和响应可以通过这个链接传递
    非持久性连接
    服务器每发送一个对象后,相关的TCP连接就被关闭,每个TCP连接只能传送一个请求消息和响应消息
    socket运作流程
    输入域名
    DNS域名解析(将域名解析为IP地址)
    找到相对应的服务器
    TCP的三次握手(验证身份信息)
    后面
    找到相对应的资源库
    返回相对的资源
    对所有文件进行解析
    将解析完毕的页面返回客户端
    关闭页面同时进行四次握手
    day4
    环境变量配置
    安装mongodb
    创建data文件,再在目录下创建db文件
    MongoDB=>bin打开cmd
    输入mongodb -- dbpath.d:datadb(27017是成功)
    复制bin的路径,粘贴到我的电脑、属性、高级、环境变量、path
    桌面打开cmd,输入cmd、mongo、dbpath.d:datadb
    数据库
    关系型数据库
    mtsql,收费。速度快、字段类型
    非关系型数据库
    mongodb,不收费、速度慢一点
    MongoDB:基于分布式文件存储的数据库
    mongodb操作
    cmd:mongodb -- dbpath.d:datadb
    开启数据库服务器
    cmd:mongo
    连接数据库
    show dbs
    查看服务器中有多少个数据库
    use db_name
    创建数据库
    db.createCollection("表名")
    创建表
    db
    查看当前使用的数据库
    db.getCollection("表名")
    使用表
    db.getCollectionNames()
    查看数据库中有哪些表
    db.表名.save({key:val})
    添加数据
    db.表名.find()
    查找数据
    db.表名.update({key:val},{$set:{key:val},$inc:{key:val}})
    修改数据
    db.表名.remove({key:val})
    删除数据
    day5
    Mongoose
    是在node.js环境下对mongodb进行便捷操作的对象模型工具,是nodeJs提供链接mongodb的一个库,遵循一种模板式方法,能够对输入的数据进行自动处理
    mongoose操作
    引入mongoose模块
    定义url地址,最后加上数据库名称
    连接数据库mongoose.connect(url,(err)=>{})
    创建表mongoose.model("表名",{字段类型的限制})

    限制字段类型
    创建数据
    存入数据表save()

    remove()

    update({},{$set:{}}).then((res)=>{})

    find()
    当前路径生成新的绝对路径
    引入path模块
    path.join(__dirname,"xxx")
    express:基于node.js平台,快速、开放、极简的web开发框架
    可以设置中间件来响应HTTP的请求
    定义了路由表用于执行不同的HTTP请求动作
    可用过向模板传递参数来动态渲染HTML网页
    express安装
    npm install express -generator -g
    全局安装
    npm init -y
    局部初始化
    express -e
    创建模板(出来文件夹)
    npm install
    下载依赖
    npm start
    服务器挂起
    在json文件中,将node改成supervison
    在public文件夹中创建index.html
    浏览器打开127.0.0.1:3000

  • 相关阅读:
    面试官是如何筛选简历?
    成为一名架构师得学习哪些知识?
    一个对话让你明白架构师是做什么的?
    教你一招用 IDE 编程提升效率的骚操作!
    80个让你笑爆肚皮的程序员段子,不好笑算我输!
    Java初学者最佳的学习方法以及会遇到的坑(内含学习资料)!
    作为程序员的你,一年看几本技术相关的书
    MEF 插件式开发之 DotNetCore 中强大的 DI
    MEF 插件式开发之 DotNetCore 初体验
    读 《CSharp Coding Guidelines》有感
  • 原文地址:https://www.cnblogs.com/zhangfangz/p/10606359.html
Copyright © 2011-2022 走看看