require

nodejs笔记-2017.4.13

本秂侑毒 提交于 2020-03-30 03:22:08
原文链接: http://nqdeng.github.io/7-days-nodejs/#1 模块 编写稍大一点的程序时一般都会将代码模块化。在NodeJS中,一般将代码合理拆分到不同的JS文件中,每一个文件就是一个模块,而文件路径就是模块名。 在编写每个模块时,都有 require 、 exports 、 module 三个预先定义好的变量可供使用。 require 函数用于在当前模块中加载和使用别的模块,传入一个模块名,返回一个模块导出对象。模块名可使用相对路径(以 ./ 开头),或者是绝对路径(以 / 或 C: 之类的盘符开头)。另外,模块名中的 .js 扩展名可以省略。以下是一个例子。 var foo1 = require('./foo'); var foo2 = require('./foo.js'); var foo3 = require('/home/user/foo'); var foo4 = require('/home/user/foo.js'); // foo1至foo4中保存的是同一个模块的导出对象。 另外,可以使用以下方式加载和使用一个JSON文件。 var data = require('./data.json'); exports 对象是当前模块的导出对象,用于导出模块公有方法和属性。别的模块通过 require 函数使用当前模块时得到的就是当前模块的

NodeJS基础

≡放荡痞女 提交于 2020-03-30 03:19:45
什么是NodeJS JS是脚本语言,脚本语言都需要一个解析器才能运行。对于写在HTML页面里的JS,浏览器充当了解析器的角色。而对于需要独立运行的JS,NodeJS就是一个解析器。 每一种解析器都是一个运行环境,不但允许JS定义各种数据结构,进行各种计算,还允许JS使用运行环境提供的内置对象和方法做一些事情。例如运行在浏览器中的JS的用途是操作DOM,浏览器就提供了 document 之类的内置对象。而运行在NodeJS中的JS的用途是操作磁盘文件或搭建HTTP服务器,NodeJS就相应提供了 fs 、 http 等内置对象。 用途 尽管存在一听说可以直接运行JS文件就觉得很酷的同学,但大多数同学在接触新东西时首先关心的是有啥用处,以及能带来啥价值。 NodeJS的作者说,他创造NodeJS的目的是为了实现高性能Web服务器,他首先看重的是事件机制和异步IO模型的优越性,而不是JS。但是他需要选择一种编程语言实现他的想法,这种编程语言不能自带IO功能,并且需要能良好支持事件机制。JS没有自带IO功能,天生就用于处理浏览器中的DOM事件,并且拥有一大群程序员,因此就成为了天然的选择。 如他所愿,NodeJS在服务端活跃起来,出现了大批基于NodeJS的Web服务。而另一方面,NodeJS让前端众如获神器,终于可以让自己的能力覆盖范围跳出浏览器窗口,更大批的前端工具如雨后春笋。 因此

NodeJS基础学习总结

一曲冷凌霜 提交于 2020-03-30 03:19:17
一、nodeJS解释   JS是脚本语言,脚本语言都需要一个解析器才能运行。对于写在HTML页面里的JS,浏览器充当了解析器的角色。而对于需要独立运行的JS,NodeJS就是一个解析器。    每一种解析器都是一个运行环境,不但允许JS定义各种数据结构,进行各种计算,还允许JS使用运行环境提供的内置对象和方法做一些事情 。例如运行在浏览器中的JS的用途是操作DOM, 浏览器就提供了 document 之类的内置对象 。而运行在NodeJS中的JS的用途是操作磁盘文件或搭建HTTP服务器, NodeJS就相应提供了 fs 、 http 等内置对象 。   尽管存在一听说可以直接运行JS文件就觉得很酷的同学,但大多数同学在接触新东西时首先关心的是有啥用处,以及能带来啥价值。   NodeJS的作者说,他创造 NodeJS的目的是为了 实现高性能Web服务器 ,他 首先看重的是事件机制和异步IO模型的优越性 ,而不是JS。但是他需要选择一种编程语言实现他的想法,这种编程语言不能自带IO功能,并且需要能良好支持事件机制。JS没有自带IO功能,天生就用于处理浏览器中的DOM事件,并且拥有一大群程序员,因此就成为了天然的选择。   如他所愿,NodeJS在服务端活跃起来,出现了大批基于NodeJS的Web服务。而另一方面,NodeJS让前端众如获神器,终于可以让自己的能力覆盖范围跳出浏览器窗口

Node.js 的module 系统

元气小坏坏 提交于 2020-03-30 03:18:54
  相较于原生的JavaScript,不同的JavaScript文件之间很难共享变量。有鉴于此,Node.js在JavaScript的基础上进行了扩充,引入了require,exports,module三个global object。 一、absolute module 和 relative module   Smashing Node.js 的作者将node.js 中的modules 分成了两类,一类是absolute modules,一类是 relative modules。   <1> absolute modules,指的是是node core自带的重要modules,如http,fs等,我们使用这些modules时,只需要 require(‘module_name’)即可;还包括用npm安装的第三方module,这些module 默认安装的位置是./node_modules/ 路径下,使用这些modules时,同样只需要require(‘module_name’)即可。但是,在package.json文件中要添加这些module的name,以便使用npm安装。   <2> relative modules,指的是我们自己写的modules,这些modules一般存在于工程文件夹内部,引用时我们需要以require(‘相对路径/module_name’)的方式引用。相对路径

Node.js API —— Modules(模块)

你离开我真会死。 提交于 2020-03-30 03:18:34
// 说明 Node API 版本为 v0.10.31。 中文参考: http://nodeapi.ucdok.com/#/api/ , http://blog.sina.com.cn/oleoneoy 本段为博主注解。 目录 ● 模块 ○ Cycles ○ Core Modules ○ File Modules ○ Loading from node_modules Folders ○ Folders as Modules ○ Caching ■ Module Caching Caveats ○ The module Object ■ module.exports ■ exports.alias ■ module.require(id) ■ module.id ■ module.filename ■ module.loaded ■ module.parent ■ module.children ○ All Together... ○ Loading from the global folders ○ Accessing the main module ○ Addenda: Package Manager Tips 模块 稳定性:5 - 锁定 Node 有一个简单的模块加载系统。在 Node 里面,文件和模块是一一对应的。举个例子, foo.js 加载同一目录下的模块 circle

WampServer 2.5设置外网访问/局域网手机访问(403 Forbidden错误解决方法)

吃可爱长大的小学妹 提交于 2020-03-29 17:30:40
安装好wamp后,想用手机通过局域访问电脑上wamp下的网页,结果出现如下提示。 (403 Forbidden)错误 1.打开http.conf文件 2.找到下图中红色方框中的onlineoffline tag - don’t remove,将原来的Require local替换为Require all granted; 注意几种常用格式,自己可以灵活配置: Require local 仅允许本地访问; Require all denied 拒绝所有访问; Require all granted 允许所有访问; Require ip 192.168.0.1 仅允许IP:192.168.0.1 访问; Require not ip 192.168.0.1 仅禁止IP:192.168.0.1访问; 3.完成修改好,重新启动所有服务。 <—————————————————————> 来源: https://www.cnblogs.com/bingokeith/p/7062021.html

Node实战-----爬取网页图片

无人久伴 提交于 2020-03-28 20:58:10
在本篇博文中我将实现一个完整的实例:主要使用Node.js爬取一个网页,需要通过第三方模块cheerio.js分析这个网页的内容,最后将这个网页的图片保存个在本地。 一、项目目录与思路 新建一个项目名为:project_01,输入命令在控制台,使其生成package.json文件: 命令: npm init 在控制台输入npm install命令下载需要的模块,在本项目中需要的request和cheerio模块,将使用命令进行下载到本地: 命令: npm install request cheerio -S 此时项目的文件夹的目录为: img文件夹用来存储图片文件 node_modules文件夹是模块默认的保存位置 index.js文件是整个项目的入口文件。 config.js文件是配置文件,用来存放网页地址和图片文件夹的路径,这样做的目的是使整个项目的可拓展性增强。 analyze.js文件用来存储分析DOM的方法。 package.json文件是包的描述文件。 打开node_modules文件夹可以看到相应的模块: 整体的思路:通过第三方模块request的请求网页地址,从而得到整个网页的DOM结构,根据DOM结构利用cheerio模块分析出图片文件的地址,再次请求这个地址,再次请求这个地址,最后将得到的图片数据存储在本地。 二、 配置网页地址及图片存放的文件夹 配置内容

webpack require.Context功能作用

余生长醉 提交于 2020-03-28 20:53:40
1.require 1.1完整路径的require语句: require('tools'); //preset alias tools require('./js/main'); 1.2带表达式的 require 语句:自动创建一个上下文(context) 如果你的 require参数含有表达式(expressions),会自动创建一个上下文(context),因为在编译时(compile time)并不清楚具体是哪一个模块被导入。 如: require('./template/' + name + '.ejs'); webpack 解析 require() 的调用,提取出来如下这些信息: Directory: ./template Regular expression: /^.*\.ejs$/ 会返回template目录下的所有后缀为.ejs模块的引用,包含子目录: { "./table.ejs": 42, "./table-row.ejs": 43, "./directory/folder.ejs": 44 } 2.require.context:手动创建一个上下文(context) require.context(directory, useSubdirectories = false, regExp = /^\.\//); directory:指定要打包的目录;

webpack中,require的五种用法

佐手、 提交于 2020-03-28 20:49:25
a.js: module.exports = function(x){ console.log(x); } 一,commonjs同步: var b = require('./a');b('你好')//你好 二,commonjs异步加载: 根据 require.ensure([预加载模块项],fn,文件名称) 语法,webpack实现了它,作用是可以在打包的时候进行代码分片,并异步加载分片后的代码: require.ensure(['./a'],function(require){   var a = require('./a');   a('hello') },'b') dist打包下js中的文件名称就是b.js 三,webpack自带的require.include 它可以实现上面是预加载功能,而不用把模块写在数组中; require.include还有一个作用是能把子模块中的公共部分,提取到父模块中; require.ensure([],function(require){ require.include('./a') ;//此处只加载,不执行; let b = require('./a'); //执行 b('你好'); },'b'); 四,AMD异步加载 webpack既支持commonjs规范也支持AMD规范,这就意味着AMD的经典语法是可以正常使用的,如: require

bcrypt 安装不成功解决办法

旧街凉风 提交于 2020-03-27 10:15:52
网站在登录前,需要进行注册收集用户基本信息,bcrypt 提供密码加密验证的方法,但是使用不正确,会给初学者带来各种问题。 bcrypt 的安装: npm i bcrypt 经过测试,经常安装不成功,原因和node.js的版本有原因,我在 下面这篇文章中有记录解决办法: bcrypt 安装不成功解决办法 但也不是万能的,如果还不能解决的话,可以尝试给 bcrypt 指定版本号安装: npm install --save bcrypt@2.0.1 一般是会成功的!! 用户在注册时,除了收集用户信息外,因为要用到 bcrypt ,必须要在注册时对密码进行加密,加密后再保存到数据库中。因为用户登录时,使用 bcrypt 的 compare 方法,这个方法是验证加密的密码的,如果在注册时没有加密,而登录时使用 compare 进行验证,直接会导致,将 mongodb 直接挂掉!而且登录也不会成功,也不报错,也不提示的这种尴尬的局面,会导致无从下手。 bcrypt 注册的逻辑: 收集用户(表单)的基本信息 bcrypt.genSalt() 给密码加密 加密完成,将数据保存在数据库 router.post('/register',urlencodedParser,(req,res) => { //验证 const newUser = new UserSchema({ email: req