node

Node.js笔记

1 node.js介绍

1.1 命令行操作:

cls清屏 cd跳转 ↑返回上一步操作 ↓返回下一步操作 node运行node.js文件

1.2 Node.js 是什么

  • JavaScript 运行时
  • 既不是语言,也不是框架,它是一个环境
  • Node.js 中的 JavaScript
    • 没有 BOM、DOM

    • EcmaScript 基本的 JavaScript 语言部分

    • 在 Node 中为 JavaScript 提供了一些服务器级别的 API

      • 文件操作的能力

      var fs=require(‘fs’);

      // 读取文件

      // 参数:1文件路径,[2编码读写方式],3回调函数

      fs.readFile(‘hello.txt’,function (error,data) {

      if(error) return console.log('文件读取失败'); 
      
      console.log(data.toString());
      

      });

      //改写文件

      // 参数:1文件路径,2 写入内容,3回调函数

      fs.writeFile(’./hello.txt’,‘zheshiyigeneirong’,function (error) {

        console.log(error);
      

      });


* http 服务的能力

  // 1 加载http核心模块
  var http=require('http');
  // 2 创建web服务器
  var server=http.createServer();
  // 3 接受请求、反馈请求
  server.on('request',function (request,response) { 
      
      if(request.url === '/'){
          response.end('index page');//响应内容只能是字符串和二进制
      }else if(request.url === '/login'){
          response.end('login page');
      }
   });
  // 4 绑定端口号,启动服务器
  server.listen(3000,function () { 
      console.log('服务器启动成功了,可以通过http://127.0.0.1:3000/ 来进行访问');
      
   });

1.3node.js能做什么

  • web服务器后台
  • 命令行工具
    • npm
    • git
    • hexo

1.4一些资源

  • 《深入浅出nide.js》
  • 《node.js权威指南》
  • JavaScript标准参考教程(alpha):JavaScript.raunyifeng.com
  • node入门:nodejs.org

2模块系统

2.1在 Node 中没有全局作用域的概念

  • 在 Node 中,只能通过 require 方法来加载执行多个 JavaScript 脚本文件
  • require 加载只能是执行其中的代码,文件与文件之间由于是模块作用域,所以不会有污染的问题
    • 模块完全是封闭的
    • 外部无法访问内部
    • 内部也无法访问外部
  • 模块作用域固然带来了一些好处,可以加载执行多个文件,可以完全避免变量命名冲突污染的问题
  • 但是某些情况下,模块与模块是需要进行通信的
  • 在每个模块中,都提供了一个对象:exports
  • 该对象默认是一个空对象
  • 你要做的就是把需要被外部访问使用的成员手动的挂载到 exports 接口对象中
  • 然后谁来 require 这个模块,谁就可以得到模块内部的 exports 接口对象
  • 还有其它的一些规则,具体后面讲,以及如何在项目中去使用这种编程方式,会通过后面的案例来处理

2.2核心模块

  • 核心模块是由 Node 提供的一个个的具名的模块,它们都有自己特殊的名称标识,例如
    • fs 文件操作模块
    • http 网络服务构建模块
    • os 操作系统信息模块
    • path 路径处理模块
    • 。。。。
  • 所有核心模块在使用的时候都必须手动的先使用 require 方法来加载,然后才可以使用,例如:
    • var fs = require('fs')

2.3http

  • require
  • 端口号
    • ip 地址定位计算机
    • 端口号定位具体的应用程序
  • Content-Type
    • 服务器最好把每次响应的数据是什么内容类型都告诉客户端,而且要正确的告诉
    • 不同的资源对应的 Content-Type 是不一样,具体参照:http://tool.oschina.net/commons
    • 对于文本类型的数据,最好都加上编码,目的是为了防止中文解析乱码问题
  • 通过网络发送文件
    • 发送的并不是文件,本质上来讲发送是文件的内容
    • 当浏览器收到服务器响应内容之后,就会根据你的 Content-Type 进行对应的解析处理

3模板引擎的使用

安装 npm install art-template

在需要使用的文件模块中加载 art-template

只需要使用 require 方法加载就可以了:require(‘art-template’)
参数中的 art-template 就是你下载的包的名字
也就是说你 isntall 的名字是什么,则你 require 中的就是什么

在服务器中

1.导入核心模块
var template = require('art-template')
2.创建需要渲染的数据
var comments = [{
        name: '张龙',
        message: '我是傻逼',
        dateTime: '2019-10-19'
    },
    {
        name: '阿芳',
        message: '我是群花',
        dateTime: '2019-10-19'
    },
    {
        name: '宝旭',
        message: '我就隔张龙两耳吧',
        dateTime: '2019-10-19'
    },
    {
        name: '陈帅',
        message: '我只会说文言文',
        dateTime: '2019-10-19'
    }

]
3.读取文件,将数据comments数组渲染在页面中
   fs.readFile('./views/index.html', function (err, data) {
        if (err) {
            return res.end('404 not found.')
        }
        var html=template.render(data.toString(), {
            comments: comments
        })
        res.end(html)
    })

在需要渲染的页面中

    <ul class="list-group">
      {{each comments}}
      <li class="list-group-item">
        <span class="ming">{{ $value.name }} 说:</span>{{ $value.message }}
        <span class="pull-right">{{ $value.dateTime }}</span>
    </li>
      {{/each}}
    </ul>

4服务器中的表单提交

以前表单是如何提交的

​ 表单中需要提交的表单控件元素必须具有 name 属性

​ 表单提交分为:

​ 1. 默认的提交行为

​ 2. 表单异步提交

服务器中的表单提交

​ 需要在form表单中添加如下两个属性

​ action:(地址)

​ method:get/post(方法)

5 重定向

如何通过服务器让客户端重定向?
1. 状态码设置为 302 临时重定向

​ 2. 在响应头中通过 Location 告诉客户端往哪儿重定向

如果客户端发现收到服务器的响应的状态码是 302 就会自动去响应头中找 Location ,然后对该地址发起新的请求,所以你就能看到客户端自动跳转了

  res.statusCode = 302
  res.setHeader('Location', '/')
  res.end()
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值