Node.js基础

一,基础知识部分

1.node是什么?
  • node.js基于chromeV8引擎构建的javascript运行时环境。
  • 不是框架不是库。
  • 说白了就是能够通过node.js来解释执行js的代码。
2.node中的js
  • 没有dom和bom,有es;
  • 提供了一些服务端操作的api
    fs;http;os;path等
3.特性

Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。

  • 事件驱动
    在node中执行的代码是通过事件去触发的。
  • 非事件驱动,它达到某种状态会执行,他会循环去检查。
  • 非阻塞式 I/O 的模型(和异步的概念非常像)
4.npm

npm 是 JavaScript 世界的包管理工具,并且是 Node.js 平台的默认包管理工具。通过 npm 可以安装、共享、分发代码,管理项目依赖关系。

5.node能做什么?
  • node让前端拥有服务端开发的能力
  • node可以做一些命令行的工具
  • npm
  • webpack
  • 我们平时工作的时候使用做多的就是node的命令行工具,我们不用自己做,一般是使用别人做好的

二,基础操作

1.解析执行JavaScript

1.在文件目录下按住shift点击右键,在此处打开powershell窗口,可以执行命令
2.打开cmd(win+R执行cmd),切换盘符,盘符: 切换盘符(如c:),通过cd切换到指定目录
3.通过vscode提供的命令行工具(直接就在我们当前的目录下了)
执行注意问题:

  • 执行脚本 node + 脚本文件路径
  • 文件名不能使用node.js作为文件名,最好不要使用中文
2.读写文件

node给我们提供了一个操作文件的模块fs模块,fs是file-system的缩写我们想用这个模块,需要先引入var fs = require('fs');就是提供了一些文件操作的api。

  1. 读文件
    readFile(path,function(error,data){})
var fs = require('fs');
fs.readFile('../9.Node.js/hello',function(error,data){
    if(error){
        console.log(error)
    }else{
        console.log(data.toString())
    }
})

data是一个二进制数据,可以通过toString()方法转换成字符串
2.写文件
writeFile(path,text,function(error){})

var fs = require('fs');
fs.writeFile('../9.Node.js/write-fs','书写文件成功',function(error){
    if(error){
        console.log(error)
    }else{
        console.log(data)
    }
})
3.http服务

node为我们提供了一个http的模块,通过这个模块我们可以快速构建一个web服务.
如何构建

// ===========构建HTTP服务
// 1.引入http模块
var http = require('http');
//2. 通过http提供的一个api创建web项目
var service = http.createServer();
// 3.监听request请求
service.on('request',function(request,response){
    console.log("接收到了请求")
})
//4.要开启这个服务需要监听端口号
service.listen(2000,function(){
    console.log('node服务启动在2000端口,可以通过localhost:2000进行访问')
})

参数解释
两个参数:

  • request: 携带请求的信息,接受请求的参数。
  • response: 对浏览器做出响应
  • 使用response.write()response.end()来向浏览器声明响应结束
  • 需要注意的是响应的结构必须是字符串或者二进制,这会用到JSON对象转为字符串JSON.stringify();扩展字符串转为JSON的方式JSON.parse()

三,node中的javascript

1.模块化开发

JS 模块化就是指 JS 代码分成不同的模块,模块内部定义变量作用域只属于模块内部,模块之间变量命名不会相互冲突。各个模块相互独立,而且又可以通过某种方式相互引用协作。
所谓模块化开发就是封装细节,提供使用接口,彼此之间互不影响,每个模块都是实现某一特定的功能。模块化开发的基础就是函数。模块化开发使用代码耦合度降低,模块化的意义在于最大化的设计重用,以最少的模块、零部件,更快速的满足更多的个性化需求。

2.为什么要进行模块化开发?

JS 诞生的时候,仅仅是为了实现网页表单的本地校验和简单的 dom 操作处理。所以并没有模块化的规范设计。项目小的时候,我们可以通过命名空间、局部作用域、自执行函数等手段实现变量不冲突。但是到了大一点的项目,各种组件,各种第三方插件和各种 js 脚步融合的时候,就会发现这些技巧远远不够。

3.模块之间如何引用协作
  1. 通过require()方法进行引入
    注意路径问题(如果不加路径的话会默认先去找核心模块,之后找第三方模块)
  2. 可以通过模块暴露的api或者成员变量去进行通信
    module.exports我们实际暴露的是module.exports指向的内容。(即 require到的内容与exports的指向改变无关,是由module.exports指向的内容决定的)
    exports 就是module.exports的浅拷贝。
4.node里的模块
  • 核心模块
    node官方文档有提供api
  • 第三方模块
  • 用户自定义模块
5.模块化开发的好处

使我们的系统更加容易维护,提高了代码的灵活性,复用性。

四,简单的服务端开发

1.关于ip和端口号
  • ip 地址定位计算机
    查看本机IP ipconfig
  • 端口号定位具体的应用程序
    一切需要互联网通信的软件都会占用一个端口号
    端口号范围是0 - 65536之间
    在计算机中有一些默认端口号,最好不要去使用,例如:http默认的80
    我们在开发过程中使用一些简单好记的就可以,例如:3000、5000等没含义的。
 // ip和源端口
    // const 来声明一个只读的常量
    const ip = request.socket.remoteAddress;
    const port  =request.socket.remotePort;
    console.log(`您的IP地址是${ip},您的源端口是${port}`)
2.content-type解决乱码问题

对照关系网站:http://tool.oschina.net/commons

 res.setHeader('Content-Type', 'text/html; charset=utf-8')
3.发送文件中的数据

可以通过http结合fs系统
通过http结合fs就可以通过我们开启的服务访问html页面。
注意的是所有通过url访问的文件都需要在服务中配置路径。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值