commonJS -- require

require命令用于加载文件,后缀名默认为.js

var foo = require(‘foo‘);
//  等同于
var foo = require(‘foo.js‘);

根据参数的不同格式,require命令去不同路径寻找模块文件。

(1)如果参数字符串以“/”开头,则表示加载的是一个位于绝对路径的模块文件。比如,require(‘/home/marco/foo.js‘)将加载/home/marco/foo.js

(2)如果参数字符串以“./”开头,则表示加载的是一个位于相对路径(跟当前执行脚本的位置相比)的模块文件。比如,require(‘./circle‘)将加载当前脚本同一目录的circle.js

(3)如果参数字符串不以“./“或”/“开头,则表示加载的是一个默认提供的核心模块(位于Node的系统安装目录中),或者一个位于各级node_modules目录的已安装模块(全局安装或局部安装)。

举例来说,脚本/home/user/projects/foo.js执行了require(‘bar.js‘)命令,Node会依次搜索以下文件。

  • /usr/local/lib/node/bar.js
  • /home/user/projects/node_modules/bar.js
  • /home/user/node_modules/bar.js
  • /home/node_modules/bar.js
  • /node_modules/bar.js

这样设计的目的是,使得不同的模块可以将所依赖的模块本地化。

(4)如果参数字符串不以“./“或”/“开头,而且是一个路径,比如require(‘example-module/path/to/file‘),则将先找到example-module的位置,然后再以它为参数,找到后续路径。

(5)如果指定的模块文件没有发现,Node会尝试为文件名添加.js.json.node后,再去搜索。.js件会以文本格式的JavaScript脚本文件解析,.json文件会以JSON格式的文本文件解析,.node文件会以编译后的二进制文件解析。

(6)如果想得到require命令加载的确切文件名,使用require.resolve()方法。

时间: 2024-10-10 06:32:23

commonJS -- require的相关文章

commonJS 浏览器实现

commonjs http://www.commonjs.org/ CommonJS JavaScript is a powerful object oriented language with some of the fastest dynamic language interpreters around. The official JavaScript specification defines APIs for some objects that are useful for buildi

RequireJS-CommonJS-AMD-ES6 Import/Export详解

RequireJS-CommonJS-AMD-ES6 Import/Export详解 为什么起了一个这个抽象的名字呢,一下子提了四个名词分别是:RequireJS,CommonJS,AMD,ES6,答案是因为现实很骨感,我们必须很勇敢才能正视这一段悲催的往事.如今的JavaScript平台正值如日中天,大家可能会忽略他的过去和弊端,这些弊端中一直被人诟病的就是JavaScript的包管理,比如类似Java中的import,其实理论上来讲这种基本元素的缺失大大的阻碍了人们对一种语言的认可,认为他难

webpack入门(六) API in modules

A quick summary of all methods and variables available in code compiled with webpack. 用webpack编译的一些变量和方法的快速总结 Basic require CommonJs require(dependency: String) Returns the exports from a dependency. The call is sync. No request to the server is fire

前端打包成桌面应用、以及chrome扩展

前段时间在利用工作之余开发了tomato timer这个蕃茄钟,然后部署到github.io上,由于greatway太厉害,偶尔会有打不开的情况.上周末对比做了扩展和改进,使其成为chrome的插件,或者成为桌面app. chrome插件的使用与开发 一.如何安装与使用: 1.下载tomato timer项目,github地址 https://github.com/cqhaibin/tomato-timer.git 2.切换到V2.0.0.0的tag,然后如下图所配置: 3.然后单击 “小飞”图

什么是Webpack

Webpack电子书 现在,越来越多的网站已经从网页模式进到到了 Webapp 模式,它们运行在高级浏览器中,使用 HTML5.CSS3.ES6等技术来开发丰富的功能.WebApp 通常是一个单页面应用,每一个视图通过异步的方式来加载,这样会导致在加载的时候应用越来越多的 Javascript 语言. 现在就需要应对一个问题,如何在开发环境组织好这些碎片化的代码和资源,并且保证它们在浏览器端快速.优雅地加载和更新.这就需要一个模块化系统,这个问题一直都是前端工程师多年来一直探索的问题. 模块系统

javascript之模块

node的风靡,模块化思想变得格外重要. 基本思想: 1.匿名函数 2.带参的匿名函数 3.放大的模块(使用2的方法 对模块进一步扩展 这样模块就可以分开在文件中) 4.宽放大模式  (module || {}) 5.严放大模式 (var old_moduleMethod = my.moduleMethod ; my.moduleMethod = function() {}) 这种方式下可以保留以前版本方法的访问方法  bootstrap的插件就有这种写法 推荐写的不错的博客 1.阮一峰老师的博

转载:Eslint 规则说明

原文: http://blog.csdn.net/helpzp2008/article/details/51507428 "no-alert": 0,//禁止使用alert confirm prompt "no-array-constructor": 2,//禁止使用数组构造器 "no-bitwise": 0,//禁止使用按位运算符 "no-caller": 1,//禁止使用arguments.caller或arguments

Learning JavaScript Design Patterns -- A book by Addy Osmani

Learning JavaScript Design Patterns A book by Addy Osmani Volume 1.6.2 Tweet Copyright © Addy Osmani 2015. Learning JavaScript Design Patterns is released under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 unported license. It

在webpack开发中引入第三方插件(vue项目)完善ing...

并不是所有的js文件都可以直接在webpack中使用.这些文件可能不支持模块(module)格式,甚至完全没有使 用模块(module). webpack提供了几种loaders(装载机)来解决这些文件如何在webpack中使用. 这个示例使用require来保证他们( 的代码量)短小.通常你需要在你的webpack的config文件中配置这些loaders(装载机).详情见Using loaders (使用加载器). 1.IMPORTING(进口) 如果一个文件不通过require()依赖进口