千家信息网

如何进行Node.js模块格式在浏览器中的尝试

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,本篇文章给大家分享的是有关如何进行Node.js模块格式在浏览器中的尝试,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。前面提到Node.
千家信息网最后更新 2025年01月19日如何进行Node.js模块格式在浏览器中的尝试

本篇文章给大家分享的是有关如何进行Node.js模块格式在浏览器中的尝试,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

前面提到Node.js有一套简洁的格式写模块,它遵循的就是 Moudles。

浏览器里的JavaScript呢? 尽管语言本身暂不支持模块,但可以用现有的API包装一个写法出来。

毫无疑问,首先想到的是Node.js的Modules格式,它是***的效仿对象。因为前后端有一个统一的方式写JS模块岂不乐哉!

但一开始就有碰到一些难题

1,服务器端JS模块文件就在本地,浏览器端则需要通过网络请求。

2,服务器端可以很容易的实现同步或异步请求模块,浏览器端则问题多多。

如下

var event = require("event");     event.bind(el, 'click', function() {      // todo  });

这段代码中require如果是异步执行的,则event.bind的执行有可能会出错。

那实现同步的require不就行了吗?

的确可以使用 XHR 实现同步载入模块JS文件。但XHR的缺点也是明显的,它不能跨域,这点让人很难接受,因为有些场景需要模块部署在不同的服务器。

那只能通过script tag来实现模块加载了!

但script tag默认就是异步的,要实现Node.js的一模一样风格(Modules)很难,几乎是不可能。

这时,又一模块格式出现了:Modules/Wrappings ,顾名思义包裹的模块。该规范约定如下

1,定义模块用module变量,它有一个方法declare

2,declare接受一个函数类型的参数,如称为factory

3,factory有三个参数分别为require、exports、module

4,factory使用返回值和exports导出API

5,factory如果是对象类型,则将该对象作为模块输出

描述有拗口,代码却很简单,使用了一个function包裹模块(Node.js模块则无需包裹)。

一个基本的模块定义

module.declare(function(require, exports, module)  {      exports.foo = "bar";   });

直接使用对象作为模块

module.declare(  {      foo: "bar" });

Modules/Wrappings的出现使得浏览器中实现它变得可能,包裹的函数作为回调。即使用script tag作为模块加载器,script完全下载后去回调,回调中进行模块定义。

好了,截止目前我们已经看到了两种风格的模块定义:Modules 和 Modules/Wrappings。

CommonJS Modules有1.0、1.1、1.1.1三个版本。

Node.js、SproutCore实现了 Modules 1.0。

SeaJS、AvocadoDB、CouchDB等实现了Modules 1.1.1。

SeaJS、FlyScript实现了Modules/Wrappings。

注:

1,SeaJS未实现全部的 Modules 1.1.1。如require函数的main,paths属性在SeaJS中没有。但SeaJS给require添加了async、resolve、load、constructor。

2,SeaJS没有使用 Modules/Wrappings 中的module.declare定义模块,而是使用define函数(看起来象AMD中的define,实则不然)。

以上就是如何进行Node.js模块格式在浏览器中的尝试,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

模块 浏览器 浏览 格式 函数 包裹 对象 就是 服务器 同步 服务 尝试 三个 代码 参数 文件 更多 知识 篇文章 类型 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 国家网络安全信息化基地 敦化市热力站自动化控制软件开发 为什么数据库加载不了 思科服务器对设备远程管理 pg数据库备份表命令 阿里云服务器购买即时通讯 偃师im即时通讯软件开发 计算机三级网络技术复习用书 eac抓轨数据库 是全球联网吗 拼多多平台服务器是干嘛的 网络安全防御系列 服务器编译出问题 四川网络技术开发销售价格 使用socks代理服务器 云服务器学习租赁费用 服务器系统密码一般用哪几类 软件开发流程详解 浙江正规软件开发报价 天域互联网科技中心在哪里 菏泽市网络安全保卫大队 数据库中左右比较 密码编码学与网络安全第四 全国信息网络安全协会联盟 管理工具看不到服务器管理员 数据库技术就业怎么样 网络安全模块厂家 xshell连接服务器老是失败 参照完整性保证数据库中实体 无数据库分类目录网站源码 服务器lpm
0