草庐IT

NAPI模块

全部标签

javascript - 在 javascript 中使用像 requirejs 或 commonjs 模块这样的 AMD 有什么好处?

我阅读了很多关于AMD解决方案的文章,例如RequireJS或在Javascript中遵循CommonJS风格的模块加载器。假设我有一个分为以下几个部分的应用:依赖于我使用的框架的应用定义依赖于App定义和框架的模型1依赖应用程序定义的模型2、模型1和我的框架我可以将每个部分编写为RequireJS模块或通用JS模块,然后将我的项目拆分为我想要的文件,但是将每个部分编写为模块或将它们拆分为多个文件然后将它们加载到正确的顺序(以避免依赖性问题)可能将所有文件连接成一个大文件以减少HTTP请求(如r.js优化器所做的那样)? 最佳答案

javascript - 如何在 AngularJS 中声明子模块

在使用AngularJS处理大型项目时,我发现我喜欢按功能组织代码。这意味着当我有一些可识别的功能X(特别是如果它是可重用的)时,我创建目录X并将属于该功能的所有Controller、服务和其他部分放入其中。我还声明了一个名为X的新模块,并将目录X中的所有内容分配给该模块。目录结构看起来像这样:scripts/app.jscontrollers/services/directives/filters/X/controllers/services/directives/filters/在app.js中有一个主模块声明:angular.module('myApp',['X']);X/中的所

javascript - 为什么是模块模式?

我已经阅读了很多关于模块模式的文章。好的,它带来了结构、私有(private)方法等……但是使用下面的代码我可以在不使用它的情况下获得相同的行为。functionHuman(){//privatepropertiesvar_name='';var_age=0;//privatemethodsfunctioncreated(){console.log("Human"+_name+"called");};//publicthis.setName=function(name){_name=name;created();};}varh1=newHuman();h1.setName("John"

javascript - JavaScript 中的这三种模块模式实现有什么区别?

我见过以下三个代码块作为JavaScript模块模式的示例。有什么区别,为什么我会选择一种模式而不是另一种模式?模式一functionPerson(firstName,lastName){varfirstName=firstName;varlastName=lastName;this.fullName=function(){returnfirstName+''+lastName;};this.changeFirstName=function(name){firstName=name;};};varjordan=newPerson('Jordan','Parmer');模式二functi

module-pattern - 创建模块的多个实例

我以为我已经开始很好地理解JavaScript,但显然不是。让我用一个例子来解释我的问题。首先,我定义了以下模块:varTest=function(){varcounter=0;functioninit(){alert(counter);}return{counter:counter,init:init}};然后我创建了2个实例:vartest1=newTest();vartest2=newTest();现在我更新计数器变量(因为它是公共(public)的)并发出一些警报。到目前为止一切顺利。alert(test1.counter);//Alerts0test1.counter=5;a

javascript - angularjs 在不同文件中为同一模块定义服务

我有两个文件,我在其中定义了我的Angular应用程序中的服务,但是当我尝试在我的指令中同时使用它们时,我收到一条错误消息,指出找不到我定义第二个指令的服务提供者。似乎一项服务正在覆盖另一项服务。如果我将service2.js中的模块定义更改为myapp.services2,那么它就可以工作。我想我可以通过这种方式将多个工厂添加到同一个模块。有人可以指出我做错了什么吗?服务1.js:varservices=angular.module('myapp.services',[]);services.factory('Service1',function(){//servicecode});

javascript - 允许模块与 AMD/CommonJs 或脚本标签一起工作的包装器?

我刚刚尝试包装我们的一个模块,该模块将通过包含在内在一些样板中标记以允许使用requirejs加载可选的AMD。这很痛苦,我能想到的最好办法是:(function(){varexports,jQuery;if(typeofwindow.define==='function'&&typeofwindow.requirejs==='function'){exports={};define(['jquery'],function(jq){jQuery=jq;returnthisModule();});}else{exports=window;jQuery=window.jQuery;this

javascript - 在带有 DOM 选择的 Javascript 中使用模块化设计模式

我一直在关注ModularDesignPattern一段时间以来,我发现它非常有用,因为它有助于很好地维护代码并将block分离成模块。通过jQuery定期使用模块结构导致我的大部分应用程序/代码遵循以下结构:(function(){varchat={websocket:newWebSocket("ws://echo.websocket.org/"),that:this,init:function(){this.scrollToBottom();this.bindEvents();this.webSocketHandlers();},bindEvents:function(){this

javascript - 仅使用环境定义导入 TypeScript 模块以在 amd 中使用

我有一个依赖于Backbone的模块.我有一个backbone.d.ts定义,但TypeScript似乎不想编译我的模块,除非我的importBackbone=module("backbone")实际上指向一个有效的主干模块而不是一个定义文件。我正在使用AMD加载模块,并为主干定义了一个requirejs垫片。除了创建虚假的backbone.ts模块定义之外,是否有解决方法?更新:该解决方案的副作用是这样的代码不再有效,因为该模块不再存在。由于requirejs垫片,它需要存在。我知道的唯一解决方法是拥有两个.d.ts文件。一个用于使用backbone作为导入的文件,不包含declar

javascript - 当可能必须删除模块以节省内存时是否可以使用 requirejs

我们在嵌入式环境中开发应用程序。它是一个高级计算环境,在busyboxLinux系统之上具有完整的网络浏览器。唯一的异常(exception)是系统的系统内存量有限。我们的应用程序是用JavaScript构建的,在基于Webkit的网络浏览器中运行,由许多按顺序加载的javascript模块组成(效率不高)。一些模块提供由多个模块使用的通用功能。我们正在使用requirejs转换当前的javascript加载器,但我们必须首先解决一个特定需求。是否可以在使用requirejs加载模块后卸载它?假设我们使用动态加载模块:require(["somemodule.js"],function