我正在使用谷歌的CDN,并尝试使用他们的加载器加载我自己的AMD模块.我知道我做错了什么但是我被卡住了.有任何想法吗?
<script src="https://ajax.googleapis.com/ajax/libs/dojo/1.7.0/dojo/dojo.js"
type="text/javascript" data-dojo-config="async:true,parseOnLoad:true"></script>
<script type="text/javascript">
require(["dojo/_base/kernel", "dojo/_base/loader", "dojo/parser"], function(dojo){
dojo.registerModulePath("pgGallery", "http://127.0.0.1:8080/js");
});
require(["pgGallery/Message"], function(m){
m.success("foo");
});
</script>
Run Code Online (Sandbox Code Playgroud)
NVIDIA提供GPUDirect以减少内存传输开销.我想知道AMD/ATI是否有类似的概念?特别:
1)AMD GPU在与网卡连接时是否避免第二次内存传输,如此处所述.如果图形在某些时候丢失,这里描述了GPUDirect对从一台机器上的GPU获取数据以通过网络接口传输的影响:使用GPUDirect,GPU内存进入主机内存,然后直接进入网络接口卡.如果没有GPUDirect,GPU内存将转移到一个地址空间中的主机内存,然后CPU必须进行复制以将内存转移到另一个主机内存地址空间,然后它就可以转到网卡.
2)如果在同一PCIe总线上共享两个GPU,AMD GPU是否允许P2P内存传输,如此处所述.如果图形在某些时候丢失,这里描述了GPUDirect对同一PCIe总线上GPU之间传输数据的影响:使用GPUDirect,数据可以直接在同一PCIe总线上的GPU之间移动,而不会触及主机内存.如果没有GPUDirect,数据总是必须返回到主机才能到达另一个GPU,无论GPU位于何处.
编辑:BTW,我不完全确定GPUDirect有多少是蒸发器,有多少是实际有用的.我从来没有真正听说过GPU程序员将它用于真实的东西.对此的想法也是受欢迎的.
我已经使用Javascript了一段时间,我刚刚尝试过使用模块和requireJS,这很难让我对新的设计模式有所了解!
这是我的第一次尝试:
require([
"jquery",
"testModule"
], function ($, testModule) {
$(function () {
var testInstance1 = testModule;
testInstance1.setID(11);
alert(testInstance1.id);
});
});
Run Code Online (Sandbox Code Playgroud)
和testModule.js
define([
'jquery'
], function ($) {
var id = 0;
var setID = function (newID) {
id = newID;
return id;
};
return {
setID: setID,
id:id
};
});
Run Code Online (Sandbox Code Playgroud)
这返回0,我期待11.我错过了什么?
当然,它也是一个简化的例子.我想创建多个对象,每个对象应保持自己的状态变量.例如,如果我想要一个模块将一个列表附加到一个容器,DIV但是还包含要添加的函数,清除或查询该列表中的数据,我应该如何构建模块函数,以便每个实现都保持自己的状态.
谢谢
我知道不建议使用全局对象,使用AMD背后的整个想法是避免使用全局对象.但是对于一些遗留代码,我必须在全局对象中定义一些东西.目前代码如下所示:
//example2.js
define(function(){
var globalObject = window;
globalObject.x = ...
globalObject.y = ...
});
Run Code Online (Sandbox Code Playgroud)
它工作但硬编码全局对象window看起来不是很好,我很想知道是否有可能删除它.什么时候define()没用,代码看起来像这样:
//example1.js
x = ...
y = ...
Run Code Online (Sandbox Code Playgroud)
我知道,我知道你讨厌这段代码,但让我们define()谈谈:如何在requirejs中的函数内以结构化的方式访问全局变量?我希望有一个像函数的隐藏的最后一个参数传递给define()这样的:
//example3.js
define(function(globalObject){
globalObject.x = ...
globalObject.y = ...
});
Run Code Online (Sandbox Code Playgroud)
甚至更简单:this变量将指向该函数内的全局对象.例如:
//example4.js
define(function(){
this.x = ...
this.y = ...
});
Run Code Online (Sandbox Code Playgroud)
注意:我不确定最后一个.调查this传递给函数内部的变量require()说它等于window哪个可以作为我的问题的答案,但我找不到任何文档提到传递函数正在运行的上下文.也许它毕竟是在全局变量的上下文中运行的?
我正在使用RequireJS和Backbone.js开发移动应用程序.我想通过向每个锚添加data-transition和data-direction属性来指定从一个页面到另一个页面的转换(与jQuery Mobile一样):
<a href="#home" data-transition="slide" data-direction="left">Go to the home page</a>
Run Code Online (Sandbox Code Playgroud)
我的所有视图都扩展了一个基本视图,它将一个单击处理程序附加到锚点并捕获这些属性的值:
define([
'zepto',
'lodash',
'backbone'
], function ($, _, Backbone) {
'use strict';
BaseView = Backbone.View.extend({
events: {
'click a': 'navigate'
},
navigate: function (e) {
e.preventDefault();
var href = $(e.currentTarget).attr('href'),
transition = $(e.currentTarget).attr('data-transition'),
direction = $(e.currentTarget).attr('data-direction');
Backbone.history.navigate(href, true);
}
});
});
Run Code Online (Sandbox Code Playgroud)
我的问题是我不知道如何将这些值传递给路由器的路由处理程序,定义为另一个模块:
define([
'zepto',
'lodash',
'backbone'
], function ($, _, Backbone) {
'use strict';
var Router = Backbone.Thumb.Router.extend({
routes: {
'': 'home'
}
});
var …Run Code Online (Sandbox Code Playgroud) 如果我正在制作一个JavaScript库供一般使用,我应该如何处理RequireJS支持?
据我所知,使您的代码更多或更少地符合RequireJS使得没有RequireJS就无法使用.那我为什么要那样做?
没有要求的人如何使用此代码?
有没有办法支持两者而不分叉/分支?我应该提供垫片代码吗?
我能正确理解吗?
我正在尝试使用Typescript将Durandal与node.js服务器集成,以便在服务器端和客户端上定义模块.
我遇到的问题是Durandal强烈依赖于RequireJS和AMD风格的定义模块,我不想在服务器端引入,因为它使用RequireJS我没有任何机会运行CommonJS-ish模块在客户端上(node.js的默认值).
棺材中的最后一个问题是,我发现没有办法定义哪些文件应该编译为AMD模块,哪个文件作为CommonJS由tsc编写 - 这似乎是最简单的解决方案.
我不认为分离客户端部分和服务器部分是一种选择,因为很多代码对于这两个部分都是通用的.
所以,我的问题有三个:
有没有办法在相同的Typescript项目中混合AMD和CommonJS模块(最好使用NodejsTools)
如果没有,有没有办法强迫Durandal使用CommonJS文件来加载视图/视图模型等等
如果这一切都不可能,那么在node.js服务器上使用AMD模块是可能的(也是明智的)
任何想法都受到高度赞赏
所以我遇到了一个有趣的用例,我使用Browserify将我的所有资产捆绑在一个项目中,但是当某个应用程序内窗口需要加载大型外部(项目外部)模块时被访问.(这是一个由三个脚本组成的视频播放器模块,可在需要时异步拉入).
目前,uncalled object如果在Browserified app.js文件之前加载了requireJS模块,我会从错误中获得各种错误,如果在Browserified代码之后cannot find module加载,则会出现错误.
无论如何,我可以让Browserify和RequireJS在同一页面上很好地播放吗?我在失去理智!
我已经在我的反应应用程序中导入了momentjs,导入后反应创建应用程序正在抛出以下错误限制构建
./src/shared_components/quiz-player/node_modules/moment/moment.js
第9行:'define'未定义no-undef
当我调查问题时,它会从下面的行中抛出
typeof define === 'function' && define.amd ? define(factory) :
global.moment = factory()
Run Code Online (Sandbox Code Playgroud)
这是由于amd模块定义,因为这是第三方库我无法解决问题,是否有任何事情可以告诉webpack配置期望amd模块定义或其他一些修复?
我有两个一起运行的节点应用程序/服务,1.主应用程序2.第二个应用程序
主应用程序负责显示最终不同应用程序的所有数据.现在我在主应用程序中放置了第二个应用程序的一些代码,现在它正在工作,但我希望它能够解耦.我的意思是secnod应用程序的代码不会在主应用程序中(通过某种方式在运行时注入它)
就像第二个服务注册到主应用程序注入它的代码.它的代码只是两个模块,是否可以在nodejs中完成?
const Socket = require('socket.io-client');
const client = require("./config.json");
module.exports = (serviceRegistry, wsSocket) =>{
var ws = null;
var consumer = () => {
var registration = serviceRegistry.get("tweets");
console.log("Service: " + registration);
//Check if service is online
if (registration === null) {
if (ws != null) {
ws.close();
ws = null;
console.log("Closed websocket");
}
return
}
var clientName = `ws://localhost:${registration.port}/`
if (client.hosted) {
clientName = `ws://${client.client}/`;
}
//Create a websocket to communicate with the client
if (ws == …Run Code Online (Sandbox Code Playgroud) amd ×10
javascript ×6
requirejs ×5
node.js ×2
backbone.js ×1
browserify ×1
commonjs ×1
cuda ×1
dojo ×1
durandal ×1
express ×1
gpudirect ×1
mobile ×1
modular ×1
nvidia ×1
opencl ×1
reactjs ×1
typescript ×1
webpack ×1