node.js的代码都是构建在模块化开发的基础之上,模块化开始也是node.js的核心之一。

node.js跳过了服务器,它自己不用建设在任何服务器软件之上,node.js的许多设计理念与经典架构(LAMP=linux +apache +mysql+php)有着很大的不同,它可以提供强大的伸缩能力,node.js没有web容器。

node.js的自身哲学:花最小的成本,追求更高的并发,更高的处理性能

node.js的特点:1.单线程

       2.非阻塞I/O

          什么是IO? 就是输入和输出(input,output),什么会输入输出?如:硬盘,网络,file,socket,其他mysql,tcp都是网络IO的一种

       3.事件驱动

阻塞模式下,一个线程只能处理一个任务,想要提高吞吐量必须通过多线程,而非阻塞模式下,一个线程永远在执行计算操作,这个线程的CPU核心利用率永远是100%。

node.js底层是C++ (V8也是C++写的).底层代码中,近半数都用于事件队列,回调函数队列的构建,用事件驱动来完成服务器的任务调度。(鬼才)

node.js没有根目录,没有web容器,让node.js实现一个静态服务都非常难!!

传统非模块化开发的缺点:1.命名冲突   2.文件依赖

标准的模块化规范:

1。AMD -requirejs

2。CMD- seajs

模块化的规范定义的一些写代码的规则,只要遵循了同样的标准,基本上风格都是一致的

服务端的模块化规范:

1.Common.js  -Node.js

模块化相关的规则:

1.一个js文件 都是一个独立的模块,模块内部的成员都是相互独立的

2.模块化的导入和导出

案例1(exports):

在01.js文件中

  1. var sum=functiona,b){
  2. sum = parseInt(a)+parseInt(b);
  3.  
  4. }
  5.  
  6. exports.sum=sum;

在02.js文件中

  1. //用require 进入模块
  2.  
  3. var module =require(./01.js //当前文件夹下的01.js文件
  4. var ret =module.sum(12,13);
  5. console.log(ret);

案例2(moudle)

在01.js文件中

  1. var sum=functiona,b){
  2. sum = parseInt(a)+parseInt(b);
  3.  
  4. }
  5.  
  6. module.exports=sum;

在02.js文件中

  1. var module=require('./01.js')
  2.  
  3. var ret=moudle(12,15);
  4. console.log(ret);

成员的导出,还可以用global这个全局对象来实现

模块化的一些特性:

1.已经加载的模块会缓存(根据文件的路径,知晓已经加载的模块,不会重复加载),提高了性能

2.模块文件的后缀的3中情况:  js  json  node   (不加文件后缀,同名文件的优先级是按照从左到右的文件加载)

除了自定义模块还有

系统的核心模块(mudule):

  1.fs文件操作

  2.http网络操作

    创建服务器  http.create( function(req,res)   {... } )

  3.path路径操作

  4.querystring查询参数解析(与url有重叠)

  5.url     url解析   url.parse(a,b)   能将url拆分成很多个部分

node.js的特点与模块化开发的更多相关文章

  1. 1.Node.js 接入微信公众平台开发

    一.写在前面的话   Node.js是一个开放源代码.跨平台的JavaScript语言运行环境,采用Google开发的V8运行代码,使用事件驱动.非阻塞和异步输入输出模型等技术来提高性能,可优化应用程 ...

  2. Node.js配合node-http-proxy解决本地开发ajax跨域问题

    情景: 前后端分离,本地前端开发调用接口会有跨域问题,一般有以下3种解决方法: 1. 后端接口打包到本地运行(缺点:每次后端更新都要去测试服下一个更新包,还要在本地搭建java运行环境,麻烦) 2. ...

  3. 使用Node.js的socket.io模块开发实时web程序

    首发:个人博客,更新&纠错&回复 今天的思维漫游如下:从.net的windows程序开发,摸到nodejs的桌面程序开发,又熟悉了一下nodejs,对“异步”的理解有了上上周对操作系统 ...

  4. Node.js学习(12)----Web应用开发

    1.使用http模块 Node.js 由于不需要另外的 HTTP 服务器,因此减少了一层抽象,给性能带来不少提升, 但同时也因此而提高了开发难度.举例来说,我们要实现一个 POST 数据的表单,例如: ...

  5. 《React Native 精解与实战》书籍连载「Node.js 简介与 React Native 开发环境配置」

    此文是我的出版书籍<React Native 精解与实战>连载分享,此书由机械工业出版社出版,书中详解了 React Native 框架底层原理.React Native 组件布局.组件与 ...

  6. [node.js]express+mongoose+mongodb的开发笔记

    时间过得很快,6月和7月忙的不可开交,糟心的事儿也是不少,杭州大连来回飞,也是呵呵. 希望下个阶段能沉浸下来,接着学自己想学的.记一下上几周用了几天时间写的课设.因为课设的缘故,所以在短时间里了解下e ...

  7. Vue-cli+Vue.js2.0+Vuex2.0+vue-router+es6+webpack+node.js脚手架搭建和Vue开发实战

    Vue.js是一个构建数据驱动的web界面的渐进式框架.在写这边文章时Vue版本分为1.0++和2.0++,这个是基于Vue2.0的项目. Vue-cli是构建单页应用的脚手架,这个可是官方的. Vu ...

  8. Node.js中的自定义模块化

      打造步骤: 1. 创建模块 [ Function / Object / String 2. 导出模块 - module.exports = 模块名称 导出一个 - module.exports = ...

  9. edp 基于node.js和npm的前端开发平台

    edp能做什么? 简洁的项目创建及包管理,多种工具进行本地调试,快速项目构建及代码检测,可扩展插件... 1. 安装 $ npm install -g edp 2. 包管理-导入依赖包 >edp ...

随机推荐

  1. ES 22 - Elasticsearch中如何进行日期(数值)范围查询

    目录 1 范围查询的符号 2 数值范围查询 3 时间范围查询 3.1 简单查询示例 3.2 关于时间的数学表达式(date-math) 3.3 关于时间的四舍五入 4 日期格式化范围查询(format ...

  2. Angular JS 中的内置方法之filter

    通过过滤器可以实现很多数据格式化的功能 常用方法形如{{ data | uppercase}} 或者是{{ 123.456 | number:2 }} 也可以通过在控制器中注入$filter来实现功能 ...

  3. Django settings.py 配置文件详解

    settings.py 配置文件 import os BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #引 ...

  4. CMD开放3389端口

    REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t R ...

  5. 使用Minifly打造基于视觉感知的跟踪无人机

    前言:无人机和人工智能现在是非常热门的话题,将两者结合起来是一个比较好的创意,本文介绍一种可行的解决方案来实现基于视觉感知的跟踪无人机.从零开始搭建无人机系统工作量和难度(以及钱)都是非常大的,所以在 ...

  6. 万万没想到,JVM内存结构的面试题可以问的这么难?

    在我的博客中,之前有很多文章介绍过JVM内存结构,相信很多看多我文章的朋友对这部分知识都有一定的了解了. 那么,请大家尝试着回答一下以下问题: 1.JVM管理的内存结构是怎样的? 2.不同的虚拟机在实 ...

  7. k8s+istio:流量控制之灰度发布

    通过Kubernetes+Istio的流量控制实现灰度发布,主要演示通过流量权重实现蓝绿,通过http自定义头实现金丝雀 准备环境 k8s和istio不想自己装的话可以在云上买个按量付费集群,用完即删 ...

  8. Python3源代码编译安装

    Python3源代码编译安装 安装必要工具 yum-utils ,它的功能是管理repository及扩展包的工具 (主要是针对repository) $ sudo yum install yum-u ...

  9. Linux常用命令之压缩解压

    压缩是一种通过特定的算法来减小计算机文件大小的机制.这种机制对网络用户是非常有用和高效的,因为它可以减小文件的字节总数,使文件能够通过互联网实现更快传输,此外还可以减少文件的磁盘占用空间.下面简介下z ...

  10. 带你剖析WebGis的世界奥秘----瓦片式加载地图

    WebGIS应用程序的页面能够通过HTML.JSP.ASP或任何任何类型的Web页文件构成,其特殊之处在于,它的请求提交的方法并不是通过常用的 "超链接"形式,而是使用鼠标与Web ...