Node.js进修

Node中的Javascript

  1. Ecmascript
    • 变量
    • 方法
    • 数据类型
    • 内置对象
    • Array
    • Object
    • Date
    • Math
  2. 模块系统
    • 在Node中没有全局作用域的概念
    • 在Node中,只能通过require方法来加载执行多个js脚本文件
    • require加载只能是执行其中的代码,文件与文件之间由于是模块作用域,所以不会有污染问题
      • 模块完全是封闭的
      • 外部无法访问内部
      • 内部也无法访问外部
    • 模块作用域固然带来了一些好处,但还是在某些情况系,模块之间需要进行通信
    • 在每个模块中,都提供了一个对象:exports
    • 该对象默认是一个空对象
    • 把需要被外部访问使用的成员手动挂载到exports接口对象中
    • 然后谁来require这个模块,谁就可以得到内部的exports接口对象
  3. 核心模块
    • 核心模块是由Node提供的一个个的具名的模块,它们都有自己的特殊标识
      • fs 文件操作模块
      • http 网络服务构建模块
      • os 操作系统信息模块
      • path 路径处理模块
    • 所有核心模块在使用的时候都必须手动的先使用require方法来加载,然后才可以使用
      • var fs = require('fs')
  4. http
    • require
    • 端口号
      • ip地址定位计算机
      • 端口号定位具体的应用程序
    • content-type
      • 服务器最好把每次响应的数据是什么内容类型告诉客户端,而且要告诉正确形式
      • 不同的资源对应的Content-Type是不一样的,具体参照:http://tool.oschina.net/commons
      • 对于文本类型的数据,最好都加上编码方式,为了防止中文解析乱码问题
    • 通过网络发送文件
      • 发送的并不是文件,本质上来讲发送的是文件内容
      • 当浏览器收到服务端响应内容之后,会根据你的Content-Type进行对应的解析处理
模块

  1. 导入方式
    • 第三方库
          var http = require('http')
          var fs = require('fs')
      
    • 本地模块
      • 被导入处
            var b = 'this is b';
            exports.b = b;
            exports.add = function(x,y){
                return x + y
            }
        
      • 导入处
            var b_content = require('./b.js')
            console.log(b_content.b)    // this is b
            console.log(b_content.add(3,5))  // 8
        
  2. 核心模块
    • os
      • os.cpus()
        • 获取当前计算机的cpu信息
      • os.totalmen()
        • 获取运行内存大小,单位是字节
    • path
      • path.extname()
        • 返回路径的扩展名
      • path.join(第一个路径,第二个路径)
        • 拼接路径
    • http:处理客户端的网络请求
      • http.createServer()
        • 创建web服务
    • fs
      • fs.readFlie()
        • 读文件
      • fs.writeFile
        • 写文件
    • query strings:处理客户端通过get/post请求传递过来的参数
      1. 需要导入 ‘querystring’ 这个核心模块
      2. get请求时 querystring 一般是配合 url 核心模块一起使用的
      3. get/post请求最终都需要调用 querystring.parse方法,将请求传递过来的键值对字符串转成js对象,方便操作
    • Global:全局共享的,不需要导入模块即可以使用
      1. __dirname : 文件所在的文件夹路径
      2. __filename : 文件所在的路径
      3. require() : 导入需要的模块
      4. module : 自定义模块时用到
      5. exports : 自定义模块时用到
端口

计算机中只有一个物理网卡,而且同一个局域网中,网卡的地址必须是唯一的,网卡是通过唯一的ip地址来进行定位

  1. ip地址用来定位计算机
  2. 端口号用来定位具体的应用程序
  3. 所有联网的程序都需要进行网络通信,都必须占用端口号
  4. 端口号从0-65536之间
  5. 在计算机中有一些默认端口号,不要使用,例如 http 80 Apache服务器、https 443
  6. 可以同时开启多个服务,但一定要确保不同服务器占用的端口号不一致才可以
  7. 在一台计算机中,同一时间同端口号,只能被一个应用程序占用
Content-Type

要点:

  1. text/plain 普通文本 用于解决中文编码乱码问题,需指定编码方式utf-8
  2. text/html 发送的是html字符串,需指定编码方式utf-8
  3. image/jpeg 读取图片资源
    var http = require('http');
    var server = http.createServer();
    server.on('request', function(req,res){
        var url = req.url;
        if (url === '/plain') {
            // 
            res.setHeader('Content-Type','text/plain; charset=utf-8');
            res.end('hello 世界');
        } else if (url === '/html') {
            // 
            res.setHeader('Content-Type','text/html; charset=utf-8');
            res.end('<p style="color:red;">hello<a href="">点我</a></p>');
        }
    })
    
    server.listen(3000, function(err, data){
        console.log('Server is running...')
    })
js中的json方法

  • JSON.parse()方法用来解析JSON字符串,构造由字符串描述的JavaScript值或对象
  • JSON.stringify()返回与指定值对应的JSON字符串,可以通过额外的参数, 控制仅包含某些属性, 或者以自定义方法来替换某些key对应的属性值。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值