Node.js介绍


  • Node.js 诞生于2009年,Node.js采用C++语言编写而成,是 一个Javascript的运行环境。Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境 ,让JavaScript的运行脱离浏览器端,可以使用JavaScript语言 书写服务器端代码。

安装Node.js

Node.js官网下载稳定版本,node偶数版本为稳定版本,奇数版本为非稳定版本。

  • mac 直接安装 或者 brew来安装

  • 安装完Node.js会自动安装NPM(Node Package Manager):包管理工具;

  • 通过指令 node -v 来查看是否安装完成和查看node版本号;npm -v 来查看npm版本。

使用Node.js实现第一个服务器

初步感受Node.js

//引入http模块
let http = require("http");
//创建一个服务器
let serve = http.createServer((req,res)=>{
console.log("hello");
res.end("hello world");
})
//设置端口号
serve.listen(3000);
  • Google Chrome 默认非安全端口列表,尽量避免以下端口。

    1, // tcpmux

    7, // echo

    9, // discard

    11, // systat

    13, // daytime

    15, // netstat

    17, // qotd

    19, // chargen

    20, // ftp data

    21, // ftp access

    22, // ssh

    23, // telnet

    25, // smtp

    37, // time

    42, // name

    43, // nicname

    53, // domain

    77, // priv-rjs

    79, // finger

    87, // ttylink

    95, // supdup

    101, // hostriame

    102, // iso-tsap

    103, // gppitnp

    104, // acr-nema

    109, // pop2

    110, // pop3

    111, // sunrpc

    113, // auth

    115, // sftp

    117, // uucp-path

    119, // nntp

    123, // NTP

    135, // loc-srv /epmap

    139, // netbios

    143, // imap2

    179, // BGP

    389, // ldap

    465, // smtp+ssl

    512, // print / exec

    513, // login

    514, // shell

    515, // printer

    526, // tempo

    530, // courier

    531, // chat

    532, // netnews

    540, // uucp

    556, // remotefs

    563, // nntp+ssl

    587, // stmp?

    601, // ??

    636, // ldap+ssl

    993, // ldap+ssl

    995, // pop3+ssl

    2049, // nfs

    3659, // apple-sasl / PasswordServer

    4045, // lockd

    6000, // X11

    6665, // Alternate IRC [Apple addition]

    6666, // Alternate IRC [Apple addition]

    6667, // Standard IRC [Apple addition]

    6668, // Alternate IRC [Apple addition]

    6669, // Alternate IRC [Apple addition]

模块化

一、为什么会有模块化

  • 在JavaScript发展初期就是为了实现简单的页面交互逻辑,寥寥数语即,如今随着前端代码日益膨胀

    这时候JavaScript作为嵌入式的脚本语言的定位动摇了,JavaScript却没有为组织代码提供任何明显帮助,JavaScript极其简单的代码组织规范不足以驾驭如此庞大规模的代码;

二、Node.js中的模块化 commonjs规范

  • CommonJS就是为JS的表现来制定规范,因为js没有模块的功能所以CommonJS应运而生,它希望js可以在任何地方运行,不只是浏览器中。

    1、创建自定义模块

    • 引入一个文件 形式模块

      home.js执行文件

      //通过require来引入
      require("./aModule"); //注意一定要有"./",文件后缀可加可不加。

      amodule.js文件

      console.log("我是amodule模块111");
    • 引入文件夹形式模块

      • home.js执行文件
      require("./aModuledir"); //必须加"./"

      ​ aModuleDir里的index.js文件,会自动查找文件夹下的index.js文件执行

      console.log("我是aModule模块文件夹");
      • 当然也可以配置默认启动文件,在文件夹内新建package.json来指定执行文件
      {
      "name":"aModule",
      "version":"1.0.0",
      "main":"test.js"
      }
  • 自定义模块的按需导出

    通过module.exports 导出; ___dirname , __filename

    module.exports = {
    a:"我是a的值",
    b(){
    console.log("我是导出的b函数");
    }
    }

    引入导出文件

    let mymodule = require("bModule");
    console.log(mymodule.a);
    mymodule.b();

    或者 通过 exports来导出

    exports.fn = function(){
    console.log("我是fn函数");
    }

    导入文件

    let myfn = require("bModule").fn;
    myfn();
    // 或者 通过解构赋值
    let { fn } = require("bModule");
    fn();
  • 模块加载的优先级 ,先文件再目录;

2、内置模块;

nodejs内置模块有:Buffer,C/C++Addons,Child Processes,Cluster,Console,Cr

ypto,Debugger,DNS,Domain,Errors,Events,File System,

Globals,HTTP,HTTPS,Modules,Net,OS,Path,Process,P unycode,Query Strings,Readline,REPL,Stream,String De coder,Timers,TLS/SSL,TTY,UDP/Datagram,URL, Utilities,V8,VM,ZLIB;内置模块不需要安装,外置模块需要安装;

npm包管理器

NPM(Node Package Manager) 官网的地址是 npm官网

  • npm常用指令;

    • npm init:引导创建一个package.json文件
    • npm help(npm -h) :查看npm帮助信息
    • npm version (npm -v) : 查看npm版本;
    • npm search:查找
    • npm install (npm i):安装 默认在当前目录,如果没有node_modules 会创建文件夹;
      • npm install module_name -S 或者--save 即 npm install module_name --save 写入dependencies
      • npm install module_name -D 或者 —save-dev 即 npm install module_name --save-dev 写入devDependencies
      • npm install module_name -g 全局安装(命令行使用)
      • 指定版本安装模块 npm i module_name @1.0 通过 "@"符号指定;
    • npm update(npm -up):更新
    • npm remove 或者 npm uninstall:删除
    • npm root 查看当前包安装的路径 或者通过 npm root -g 来查看全局安装路径;

fs模块

  • fs是文件操作模块,所有文件操作都是有同步和异步之分,特点是同步会加上 "Sync" 如:异步读取文件 "readFile",同步读取文件 "readFileSync";

    文件操作

    • 文件读取:

      • 异步读取
      let fs = require("fs");
      fs.readFile("1.txt",(err,data)=>{
      if(err){
      return console.log(err);
      }
      console.log(data.toString());
      })
      • 同步读取文件
      let fs = require("fs");
      let res = fs.readFileSync("1.txt");
      console.log(res.toString());
    • 文件写入:

      let fs = require("fs");
      //flag配置 "a":追加写入,"w":写入,"r":读取
      fs.writeFile("2.txt","我是要写入的内容",{flag:"w"},err=>{
      if(err){
      return console.log(err);
      }
      console.log("写入成功");
      })
    • 文件删除

      fs.unlink("2.txt",err=>{
      if(err){
      return console.log(err);
      }
      console.log("删除成功");
      })
    • 复制文件

      • 先读取文件再写入文件
      function mycopy(src,dest){
      fs.writeFileSync(dest,fs.readFileSync(src));
      }
      mycopy("1.txt","4.txt");
    • 修改文件名,目录也可以通过rename来操作

    fs.rename("1.txt","5.txt",function (err) {

    if(err){

    console.log(err);

    }else{

    console.log("修改成功");

    }

    });


    - 判断文件是否存在 ```js
    fs.exists("4.txt",function (exists) {
    console.log(exists);
    })

buffer缓冲区

  • buffer的创建

    • 直接创建
    • 数组创建
    • 字符串创建
    • 乱码的处理
    • buffer转换tostring

stream流

  • stream流:流与数据处理方面密不可分

    • 流的原理
    • 流数据的获取
      • pipe
      • data
      • end
    • copy的流方法实现
    • 加载视图的流方法实现

总结

  • nodejs的安装及使用

  • 服务端及客户端

  • commonjs模块化

  • fs模块的使用(文件操作及目录操作)

  • stream

  • buffer

node.js初步的更多相关文章

  1. node.js初步总结

    一:先上一段代码 process.argv.forEach(function (val, index, array) {    console.log(index + ":" + ...

  2. 多语言(Java、.NET、Node.js)混合架构下开源调用链追踪APM项目初步选型

    1. 背景 我们的技术栈包括了Java..NET.Node.js等,并且采用了分布式的技术架构,系统性能管理.问题排查成本越来越高. 2. 基本诉求 针对我们的情况,这里列出了选型的主要条件,作为最终 ...

  3. 初步了解Node.js,学做简单的留言本案例

    在还没有正式的学Node.js的时候, 你们认为Node.js 对于前端来说是什么呢? 会认为Node.js 是框架? 认为这是类似Jquery的一个快速.简洁的JavaScript框架? 反正我自己 ...

  4. node.js module初步理解

    在开发一个复杂的应用程序的时候,我们需要把各个功能拆分.封装到不同的文件,在需要的时候引用该文件.没人会写一个几万行代码的文件,这样在可读性.复用性和维护性上都很差,几乎所有的编程语言都有自己的模块组 ...

  5. Node.js 的初步理解

    Node.js 是一个采用C++语言编写的后端的 Javascript 的运行环境, 它使用了 google 的 V8虚拟机来解释和执行代码.Node.js 的有许多有用的内置的模块,比如 http, ...

  6. 初步揭秘node.js中的事件

    当你学习node.js的时候,Events是一个非常重要的需要理解的事情.非常多的Node对象触发事件,你能在文档API中找到很多例子.但是关于如何写自己的事件和监听,你可能还不太清楚.如果你不了解, ...

  7. Node.js机制及原理理解初步【转】

    一.node.js优缺点 node.js是单线程. 好处就是 1)简单 2)高性能,避免了频繁的线程切换开销 3)占用资源小,因为是单线程,在大负荷情况下,对内存占用仍然很低 3)线程安全,没有加锁. ...

  8. node.js中的路由(url)初步

    1.建立n4_root.js var http = require('http'); var url = require('url'); //这是node.js中自带的var router = req ...

  9. Node.js机制及原理理解初步

    http://blog.csdn.net/leftfist/article/details/41891407 一.node.js优缺点 node.js是单线程. 好处就是 1)简单 2)高性能,避免了 ...

随机推荐

  1. 致歉Note7用户后,三星要还给世界下一个机皇

    ​ 1月23日,三星电子在韩国首尔公布了Note7事件原因调查结果.此次认定过程精密而繁琐,最终结果发布距离三星宣布全球召回Note7已经有3个月. 相比事发之初各路信息甚嚣尘上,现在虽然还不能说已经 ...

  2. 先治再扶,重灾区后的P2P你还敢投吗?

    ​ 互联网强大的包容性和创新性,给予很多新生事物成长的空间.而其全面普及与快速传播的特性,也让任何事物都像被放在放大镜乃至显微镜下,几乎无形遁形.这样一来,新生事物很容易被"神化" ...

  3. 【原创】(三)Linux进程调度器-进程切换

    背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...

  4. springboot自动装配原理回顾、配置文件分析

    配置文件 spring boot官方文档 官方外部配置文件说明参考文档 自动配置原理分析 1. SpringBoot启动的时候加载主配置类,开启了自动配置功能@EnableAutoConfigurat ...

  5. node--静态文件托管,路由,模板引擎

    1.路由 路由是由一个URI和一个特定的HTTP方法(GET/POST)组成的 涉及到应用如何响应客户端对某个网站节点的访问 2.ejs 3.get/post 1)get获取数据 通过Url类中的qu ...

  6. node生成excel,动态替换表格内容

    这里使用的是exceljs模块, 好上手,易操作 1. 大致使用步骤 npm install exceljs // 引用var Excel = require('exceljs'); // 创建一个w ...

  7. Python 存储数据到json文件

    1 前言 很多程序都要求用户输入某种信息,程序一般将信息存储在列表和字典等数据结构中. 用户关闭程序时,就需要将信息进行保存,一种简单的方式是使用模块json来存储数据. 模块json让你能够将简单的 ...

  8. 【MySQL】:事务四大特性与隔离级别

    目录 一.事务的概念 二.事务的四大特性 1.原子性 2.一致性 3.隔离性 4.持续性 三.事务语句 1.开启事务:start transaction 2.事务回滚:rollback 指定回滚点 3 ...

  9. PySide2的This application failed to start because no Qt platform plugin could be initialized解决方式

    解决PySide2的This application failed to start because no Qt platform plugin could be initialized问题 今天在装 ...

  10. ubuntu 安装flask+nginx+gunicorn 待定

    第一步 先检查服务器环境   pip python3 mysql redis 能下就下,该升级就升级 第二步 如果你的flask程序在github上 请使用git clone 地址 下载下来(如果是私 ...