一、前言                                                                                                                                                                                                                          Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。node.js现在已经成为前端工程师的必备技能。

本节涉及的基础内容:

                               

                              1. node中的javascript

                               2.http服务能力

                               3.文件操作能力

                               

一、知识

      1、打开cmd窗口的三种方式

方式一:传统的cmd   cd到我们要操作的目录

方式二:shift + 鼠标右键,选择快速打开窗口命令

方式三:如果你的电脑装了git  选中要操作的项目 --》右击--》git bash here

     2、使用node来解析和执行文件

第一步:用编辑器建立脚本文件

第二步:使用上面的方式定义到项目目录

第三步:在cmd框中输入  node  + project.js 执行node文件(这里的文件名不能起做node.js,最好不要含有中文)

     3、node.js中的javascript

(1)node中没有BOM、DOM

验证:在你的工程目录下新建js文件---》打开当前的命令提示框---》执行node 文件 ,说明node里面并没有BOM、DOM

console.log(document);
console.log(window)

(2)node中包含一些基本的EcmaScript基本的语言

比如:变量,方法,数据类型,内置对象,Array, Object, Date, 等

可以参考:http://www.w3school.com.cn/js/index.asp

(3)一些核心模块如:FS(文件操作)

4、node中的文件操作能力

在node中如果想要对文件进行操作就必须引入FS核心模块,核心模块中提供了文件操作相关的API

读取文件:readFile(第一个参数,第二个参数)   第一个参数:是读取的文件路径  ,第二个参数:是一个回调函数

在目录下建一个文本文件和一个js文件

1)

2)

//第一步:用require来加载核心模块
var fs=require('fs');
//第二步:调用这个API
fs.readFile('hello.txt',function(error,data){console.log(error); //读取成功返回null,console.log(data);
})

3)执行文件

我们发现当读取成功的时候,error返回的是null   data中返回的是用十六进制输出的数据,为什么是十六进制的数据呢?是因为计算机只认识二进制的,但是没有找到二进制数据,就将我们的文本内容转化为16进制

接下来:用toString()来转化

//第一步:用require来加载核心模块
var fs=require('fs');
//第二步:调用这个API
fs.readFile('hello.txt',function(error,data){if(error){console.log('读取失败');}else{console.log(data.toString());}
})

小提示:如果发现命令提示符输出的中文为乱码,可以百度搜索解决  https://jingyan.baidu.com/article/fcb5aff775f3e3edaa4a71dd.html

写入文件:fs.writeFile(第一个参数,第二个参数,第三个参数)  第一个参数:为文件路径,第二个参数为:文件内容,第三个参数为回调函数function(error){}

//第一步:用require引入fs模块
var fs =require('fs');
//第二步:用上面的对象调用API
fs.writeFile('./hellonode.txt','想要学好node',function(error){if(error){console.log('写入失败');}else{console.log('写入成功');}
});

 小提示:平时我们保存文件的时候,文件的命名不能有特殊的符号,比如:* / ?之类的

5、node中的http服务

(1) 先了解几个概念:

端口号:是用来定位对应的具体程序的,所有需要联网通信的程序都要占用端口号

IP地址:是用来定位计算机的

服务器:提供对数据的服务,发请求,接受请求,给用户一些反馈

还是不理解端口号和IP作用的话引用一个前辈的图来解释:

我们在访问浏览器,用微信,QQ等软件进行通信的时候需要访问服务器,那么服务器就是通过不同软件对应的不同软件来区分接收到的是哪个应用程序的信息。然后在返回给客户端想要的信息。

并且要知道端口号和ip地址才能访问(会不会有疑问我们访问百度的时候没有带端口号呀)?

客户端的浏览器会自动开启端口号,所以只要客户端来请求,服务端就知道客户端端口号 

可以同时开启多个服务,但是一定确保不同服务占用端口号不一致

说白了,在一台计算机中,同个端口号,同一时间只能被一个程序使用

(2)使用node来轻松构建一个web服务器

//第一步:加载http核心模块
var http = require('http');
//第二步:调用createServer()方法来创建
var server=http.createServer();//第三步:注册request事件,当客户端发过来请求之后执行回调函数,对接受的数据进行反馈
server.on('request',function(){console.log('接受到了客户端的请求,请通过服务端http://localhost:3000访问');
});
//第四步:给我们的服务器设置一个端口号,客户端要知道这个端口号才能访问
server.listen(3000,function(){console.log('服务启动成功了');
});

启动服务器:

之后浏览器中输入 localhost:3000访问我们的服务器,服务器接受到响应执行回调

web服务器的响应:平时我们访问百度,或者其他网站的时候,会根据输入不同的访问路径返回给客户端不同的信息,那么他们是怎么做的呢?

请求百度:

返回给我们百度首页:

如果找不到输入的路径就会反馈给我们一个错误提示页

所以我们可以知道,服务器就是看这个Request URL来区别用户查找的不同内容,并且给出不同的反馈

优化刚刚的代码,并且用write()函数让浏览器反馈

var http = require('http');
var sever=http.createServer();
sever.on('request',function(request,response){
if(request.url==='/'){response.write('index js');
}else if(request.url==='/login'){console.log('登录');
}else{console.log('404 not found');
}});
sever.listen(3000,function(){console.log('服务器已经启动');
})

下面通过不同的访问路径来访

发现上面的中文乱码了,为什么?因为服务器响应的类型只能为二进制和字符串,具体解决方法看下篇: https://www.cnblogs.com/xxm980617/p/10506183.html

一、总结

  • Node.js 中的 JavaScript

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

转载于:https://www.cnblogs.com/xxm980617/p/10505681.html

node(基础)_node中的javascript相关推荐

  1. VN-SGG JavaScript 基础(中)

    [VN-SGG] JavaScript 基础(中) JavaScript视频课程笔记[入门到精通],这只是笔记!!! 主要内容: this,对象,原型对象,垃圾回收,数组: call.apply,ar ...

  2. js基础知识温习:Javascript中如何模拟私有方法

    本文涉及的主题虽然很基础,在很多人眼里属于小伎俩,但在JavaScript基础知识中属于一个综合性的话题.这里会涉及到对象属性的封装.原型.构造函数.闭包以及立即执行表达式等知识. 公有方法 公有方法 ...

  3. Javascript基础与面向对象基础~第四讲 Javascript中的类对象

    今天来说JS中如何实现类(class),事实上本应该昨天晚上写的,可我失言了,在些说一声"抱歉"!JS中的类是JS面向对象的基础,也是我最拿手的东西,你写的代码能否提高一个层次,一 ...

  4. js 打印数组_Node.js系列二 - Node基础知识

    一. Node执行代码 1.1. JavaScript文件执行 如果我们编写一个js文件,里面存放JavaScript代码,如何来执行它呢? // 1.直接打印一段文字 console.log(&qu ...

  5. 4、第九 - WEB开发基础 - HTML中JavaScript基础应用

    HTML中的JavaScript应用,JavaScript 是一门独立的语言,浏览器具有js解析器 一.JavaScript在HTML中存在的形式 1.JavaScript代码存在的形式 JavaSc ...

  6. JavaScript程序基础(一)网页中引入Javascript的三种方法

    JavaScript是一种基于对象的脚本编程语言,具有动态.跨平台.基于对象和安全等特性.它不需要经过编译,而是直接嵌入在HTML页面中运行,可把单纯的HTML页面转变成支持用户交互和事件响应的动态页 ...

  7. Web前端中的JavaScript语言基础

    文章目录 JavaScript主要特点 JavaScript使用形式 行内JavaScript脚本 内部JavaScript脚本的使用 外部JavaScript脚本 基本语法 标识符 关键字 数据类型 ...

  8. 第十一章:WEB浏览器中的javascript

    客户端javascript涵盖在本系列的第二部分第10章,主要讲解javascript是如何在web浏览器中实现的,这些章节介绍了大量的脚本宿主对象,这些对象可以表示浏览器窗口.文档树的内容.这些章节 ...

  9. 前端基础入门四(JavaScript基础)

    为什么80%的码农都做不了架构师?>>>    目标: 掌握编程的基本思维 掌握编程的基本语法 我们先来学习JavaScript基础,后续会讲解JavaScript高级. 自己是个做 ...

最新文章

  1. 删除数据为0所在的行
  2. nodejs express 路由与view创建多级目录
  3. 通俗讲解分布式锁,看完不懂算作者输
  4. codeforces Gargari and Bishops(很好的暴力)
  5. 面码份量Java_JAVA语言(28道练习题)
  6. Reporting Services 空白页面
  7. VMware ESX的性能如何与Hyper-V的价格进行竞争?
  8. Python编程实现对拉格朗日和KKT条件求极值
  9. java_Swing桌面程序开发
  10. Spring Boot 知识笔记(集成zookeeper)
  11. InvalidArchiveError(‘Error with archive D:\\Program Files\\Anaconda\\pkgs\\numpy-base-1.19.1-py36ha3
  12. android 开发种子文件,IT之家学院:如何制作种子文件和磁力链接
  13. spring boot 2 整合 j2Cache
  14. 忘记网站后台密码 PHP+mysql+md5 破解
  15. CentOS 7.4 Tengine安装配置详解(二)
  16. 30岁程序媛在一家公司工作八年后,告别“体制化”终于跳槽,别再妄想靠公司养老了!
  17. 微软语音引擎 TTS 最基本使用
  18. html制作小短片,教你制作微视频 一分钟成为电影大师!
  19. SDN:mininet交换机流表操作
  20. python爬虫实例手机_10个python爬虫入门实例

热门文章

  1. Unity3d:Unknown type 'System.Collections.Generic.CollectionDebuggerView'1
  2. appium部分操作
  3. C++中的继承(派生)的一些误区
  4. Map 3D中通过程序删除图层及数据源
  5. 一年之后 重温旧“梦”
  6. 下载与eclipse匹配的hibernate tools
  7. 520晚上,我用python破解了前女友的加密文件,结果却发现。。。
  8. [转]PDB——Python调试利器详解
  9. 读书笔记_打开量化投资的黑箱04
  10. 计算机中加密文件找不见,文件夹保护3000找不到文件夹加密记录怎么办?