当前位置: 首页 > news >正文

怎样做美瞳代购网站/百度推广天天打骚扰电话

怎样做美瞳代购网站,百度推广天天打骚扰电话,私人订制,前端怎么接私活做网站本文同步自我的个人博客:http://www.52cik.com/2015/12/14/learn-node-modules-module.html 上一篇讲了模块是如何被寻找到然后加载进来的,这篇则是如何导出属性方法以及自定义模块后缀等一系列模块问题。 exports 对象 这是最常见的对象了,以…

本文同步自我的个人博客:http://www.52cik.com/2015/12/14/learn-node-modules-module.html

上一篇讲了模块是如何被寻找到然后加载进来的,这篇则是如何导出属性方法以及自定义模块后缀等一系列模块问题。

exports 对象

这是最常见的对象了,以往导出都是这样写的。

// a.js
exports.bar = '属性';
exports.fn = function () { return '方法' };// b.js
var a = require('./a');
console.log(a.bar); // 属性
console.log(a.fn()); // 方法

一直都是这么用非常简单,但是不能直接用对象覆盖他,如下代码是不对的。

// a.js
exports = {bar: '属性',fn: function () { return '方法' }
};// b.js
var a = require('./a');
console.log(a.bar); // undefined
console.log(a.fn()); // 报错

为什么不能直接覆盖呢,因为 exports 只是 module.exports 对象的引用。

module.exports 对象

如果要导出一整个对象或者构造函数之类的,就需要用到 module.exports 对象了。

// a.js
module.exports = {bar: '属性',fn: function () { return '方法' }
};// b.js
var a = require('./a');
console.log(a.bar); // 属性
console.log(a.fn()); // 方法

导出构造函数:

// klass.js
function klass () {}
klass.prototype.say = function () { return '我是klass' };
module.exports = klass;// b.js
var Klass = require('./klass');
var klass = new Klass();
console.log(klass.say()); // 我是klass

module 其他属性

module 还有些其他属性,简单说下吧。

  • module.id 模块id,往往是模块路径
  • module.children 子模块
  • module.filename 模块路径
  • module.loaded 是否加载完毕
  • module.parent 父模块
  • module.paths 各级 node_modules 目录路径

require 函数

说模块,当然离不开 require 函数,除了加载模块之外,他还有一些其他用法。

  • require.resolve 不会加载执行,只会返回模块的绝对路径。
  • require.cache 缓存所有已经加载的模块,如果你要更新模块就要删除这里的缓存。
var a = require('./a');
var p = require.resolve('./a'); // 得到模块路径delete require.cache[p]; // 删除模块缓存

虽然不清楚什么时候用,但是至少是这么用的,删除缓存后,下次加载这个模块,就会重新加载模块文件了。

require.extensions 自定义模块后缀

还有个 require.extensions 非常好用的属性,但遗憾的是官方提示弃用了这个属性,不过值得庆幸的是,这个属性永远不会被移除,只是不推荐使用而已。

我第一次注意到这个属性是在 ejs 源码里,当时很好奇这是个什么东西,去翻了下官方文档,发现捡到宝了。后来又发现 node 命令行下的 babel 模块也注册了自定义模块,后缀分别是 .es, .es6, .jsx,可以直接 require('./a.es6') 或者是 require('./a.jsx') 得到编译好的 js 代码。

好了,不说废话了,来看个官方简单例子吧。

require.extensions['.json'] = function(module, filename) {var content = fs.readFileSync(filename, 'utf8');try {module.exports = JSON.parse(content);} catch (err) {err.message = filename + ': ' + err.message;throw err;}
};

这是 node 源码的 json 模块实现,我只是删除了一个 stripBOM 函数,为了方便大家理解。

当然官方不推荐这样做是有道理的,官方推荐编译为兼容的 js 代码模块运行,性能更佳,而不应该采用这样的自定义模块实现。
不过看用途而定了,有时候也不一定追求极致的性能。

http://www.lbrq.cn/news/839341.html

相关文章:

  • 石家庄工程造价信息网/佛山百度关键词seo外包
  • 网站建设的规划和设计/企业qq怎么申请
  • 网站建设推广工作描述/百度宣传推广费用
  • 做网站打广告需要多少个服务器/搜索引擎优化面对哪些困境
  • 全世界做会展介绍的网站排名/黄山搜索引擎优化
  • 做公司门户网站的重点/百度推广官方电话
  • 新手如何做网站维护/沈阳seo团队
  • 公司网站建设小江网络工作室/大数据营销的概念
  • 设计门户网站/如何制作企业网站
  • 网站如何做品牌营销/seo网站结构优化
  • 外销网站建立/外链在线发布工具
  • 南京做网站软件/百度下载安装到桌面上
  • 企业建设企业网站的好处/托管竞价推广公司
  • 做购物网站小图标/小说排行榜
  • 小型视频网站建设/品牌宣传策划公司
  • 厦门网站建设首选厦门一联网络/手机网站搜索优化
  • 做外汇都看那些网站/线上直播营销策划方案
  • 摄影师网站制作/营销策划公司名称
  • 辽宁平台网站建设哪里好/市场调研问卷
  • 有没有做代理商的明细网站/北京十大营销策划公司
  • 网站优化计划书/bing搜索引擎下载
  • 怎么查域名是否被注册/什么是关键词排名优化
  • java怎么做直播网站/郑州百度推广公司
  • 三亚网红打卡景点/南宁seo优化
  • 城乡建设网站宁德/如何做好品牌推广工作
  • 信阳公司网站建设/西安网站快速排名提升
  • 天津开发区建网站公司/简述获得友情链接的途径
  • 注销网站 注销主体/中国十大网络销售公司
  • 开发小程序游戏需要多少钱/青岛seo
  • 湖南交通建设监理协会网站/微信营销号
  • 关于用git上传远程库的一些常见命令使用和常见问题:
  • 聊聊数据和功能测试面临的挑战有哪些?
  • 数字IC后端培训教程之数字后端项目典型项目案例解析
  • Taro.eventCenter 用法详解与实战
  • 每天一个前端小知识 Day 31 - 前端国际化(i18n)与本地化(l10n)实战方案
  • JavaScript进阶篇——第一章 作用域与垃圾回收机制