随着时代的变迁,日月星辰轮回,不断的有新的事物被创造于世,作为在这个世界活着的前端工程崽的我,最近又接触了一门新手艺“node.js”。自从它2009年诞生至今,被很多前端推崇,我起步已经晚了,还好它没有被大量应用,因为用这个技术需要懂行的人才才行。我现阶段自学了一些,做个自学记录,把我所学的点点滴滴都记录下来。

node.js

一个运行在服务器端的javascript,不是一种独立的语言,也不是一种js框架,它是脱离浏览器的束缚,用来与服务器端其他软件互动,它的解释器还是用js的V8引擎。

一般学一门技术先熟悉搭建它的运行环境,对于node.js的部署其实很简单,这个直接无视,进入下一阶段。

理想的异步I/O模型

理想的异步I/O应该是应用程序发起异步调用,而不需要进行轮询,进而处理下一个任务,只需在I/O完成后通过信号或是回调将数据传递给应用程序即可。

全局对象,变量,定时器函数

因为node.js运行在服务器端,所以它设置了自己的全局对象global,process,console,module,exports; 全局变量 __filename,__dirname ;全局函数setTimeout(),clearTimeout(),setInterval(),clearInterval(),require()

全局对象

global:表示node所在的全局环境,类似于浏览器端的window对象。

process:指向node内置的process模块,此模块能获取当前系统,进程的一些信息。

console:指向Node内置的console模块,提供命令行环境中的标准输入、标准输出功能。

module:外部加载模块,该模块在启动的时候就被加载。

export:是模块公开的接口

全局变量

__filename:获取到当前执行的文件路径,指定到本身

__dirname:获取当前执行文件的目录

全局函数

1.时间定时器;setTimeout(),clearTimeout(),setInterval(),clearInterval()和我们普通的js操作一样

2.模块函数require():

原理图:(引用别人设计的图)

看了这个图了解到第一步先到文件模块缓存区加载,(原生模块的优先级仅次于文件模块缓存的优先级),在node.js中的原生模板和文件模板的优先级不同,但是不会优先于文件模板缓存区中的模块。

核心模块

Node.js 提供了几个封装的核心模块,方便我们编写代码的操作:

  1. HTTP
  2. Events
  3. Fs
  4. Util

引入模块统一方式:

  1. var http = require('http');

如果想引入自定义外部文件,要在引用的文件中创建modul.exports

  1. var klm = module.exports = function(){}

然后再引用的时候直接写法

  1. var klm = require('klm');

这样才klm.js文件中创建的函数可以在其他文件中被引用到。

简单理解下这几个模块:

http模块:

不想用apache去搭建服务器的话,Node.js提供了一个创建HTTP的方式,看下简单的例子

  1. //引用HTTP模块
  2. var http = require('http');
  3. http.createServer(function(req,res){
  4. res.writeHead(200,{'Content-Type':'text/html'});
  5. res.end('hello World');
  6. }).listen(3000);
  7.  
  8. console.log('Server running at http://127.0.0.1:3000/');

我们就可以直接用node.js方式去开启自己的服务了。

Event(事件模块):

这是重要的模块,node.js的核心思想三点之一的事件驱动

  1. //引用事件模块
  2. var events = require('events');
  3. var emitter = new events.EventEmitter();
  4.  
  5. //node.js用on方式注册事件
  6. emitter.on('someEvent',function(a,b){
  7. console.log('print',a,b);
  8. });
  9. emitter.emit('someEvent','蒯灵敏','1983');

node.js第一次的更多相关文章

  1. Node.js连接MySQL数据库报错

    解决Node.js第一次连接MySQL数据库时出现[SELECT ERROR] - ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authen ...

  2. 第一次接触node.JS

    1.初识node.js node.js平时可以关注: 一.nodejs.org看看nodejs的版本升级,新特性的加入,重要bug的修复等 二.www.npmjs.com模块社区,看他人源代码,省力 ...

  3. Node.js npm 详解

    一.npm简介 安装npm请阅读我之前的文章Hello Node中npm安装那一部分,不过只介绍了linux平台,如果是其它平台,有前辈写了更加详细的介绍. npm的全称:Node Package M ...

  4. Node.js简单操作

    在node中是不支持BOM和DOM操作的,所以像alert().document.write...都是不支持的,可以是console.log() 首先我们来输出"hello world&qu ...

  5. Node.js开发者最常范的10个错误

    目录 前言 1 不使用开发工具 1.1 自动重启工具 1.2 浏览器自动刷新工具 2 阻塞event loop 3 频繁调用回调函数 4 圣诞树结构的回调(回调的地狱) 5 创建一个大而完整的应用程序 ...

  6. Node.js 爬虫初探

    前言 在学习慕课网视频和Cnode新手入门接触到爬虫,说是爬虫初探,其实并没有用到爬虫相关第三方类库,主要用了node.js基础模块http.网页分析工具cherrio. 使用http直接获取url路 ...

  7. Node.js Stream-基础篇

    Node.js Stream - 基础篇 邹斌 ·2016-07-08 11:51 背景 在构建较复杂的系统时,通常将其拆解为功能独立的若干部分.这些部分的接口遵循一定的规范,通过某种方式相连,以共同 ...

  8. Centos7下配置node.js环境

    1.软件环境: Centos7.VMware 10.0.NodeJS v0.10.24 2.安装过程 1>安装过程中需要管理员权限,及root权限,可以敲入如下命令. [sharing@loca ...

  9. node.js 入门实例【转】

    第1章 一个简单的博客 nswbmw edited this page 14 days ago · 38 revisions Pages 29 Home FAQ 番外篇之——使用 _id 查询 番外篇 ...

随机推荐

  1. Mac系统下使用VirtualBox虚拟机安装win7--第一步 安装vbox虚拟机

    Mac系统下使用VirtualBox虚拟机安装win7操作步骤: 第一步 安装vbox虚拟机 1.先下载vbox,下载地址:: https://www.virtualbox.org/wiki/Down ...

  2. NMON中的各项参数指标

    一.NMON中的各项参数指标: SYS_SUMM:显示当前服务器的总体性能情况 Total System I/OStatistics:Avg tps during an interval:显示采集间隔 ...

  3. Android Programming: Pushing the Limits -- Chapter 7:Android IPC -- Messenger

    Messenger类实际是对Aidl方式的一层封装.本文只是对如何在Service中使用Messenger类实现与客户端的通信进行讲解,对Messenger的底层不做说明.阅读Android Prog ...

  4. mysql TIME_WAIT

    http://www.th7.cn/system/lin/201404/53762.shtml http://kerry.blog.51cto.com/172631/105233/ http://ww ...

  5. at org.apache.jsp.index_jsp._jspInit(index_jsp.java:22) 报空指针

    原来发布到weblogic 的项目,想改动发布到tomcat上.启动发布一切都正常.出入项目请求路径却包错: java.lang.NullPointerException at org.apache. ...

  6. 64位Ubuntu运行32位程序时报文件不存在(No such file or Directory)的一种解决办法

    尝试在64位Ubuntu下面运行32位程序时, 一直说 文件不存在(No such file or directory), 我只想说++. 你tm说个文件格式不正确不就好了? 非得说个文件不存在! 真 ...

  7. vim用法小节

    1.把一个文件的内容全选复制到另一个文件 方案一: gg"*yG 然后另外一个vim "*p "*是系统剪贴板寄存器 方案二: 打开另一个文件,然后输入 :r filen ...

  8. Effective C++ 之 Item 1: 视C++为一个语言联邦

    Effective C++ Chapter 1. 让自己习惯C++(Accustoming Yourself to C++) Item 1. 视C++为一个语言联邦(View C++ as a fed ...

  9. apk 打包方式

    1 项目-->Android tools -->Export Signed  Application Package 2 在项目 manifest.xml文件下 单击“use the Ex ...

  10. 【转】从RGB色转为灰度色算法

    ----本文摘自作者ZYL910的博客 一.基础  对于彩色转灰度,有一个很著名的心理学公式: Gray = R*0.299 + G*0.587 + B*0.114 二.整数算法 而实际应用时,希望避 ...