它们之间有什么区别吗?使用它们是一个偏好的问题?使用一个优于另一个产生任何优势吗?哪个更安全?
我有一个文件,main.rb,内容如下:
require "tokenizer.rb"
Run Code Online (Sandbox Code Playgroud)
tokenizer.rb文件位于同一目录中,其内容为:
class Tokenizer
def self.tokenize(string)
return string.split(" ")
end
end
Run Code Online (Sandbox Code Playgroud)
如果我尝试运行main.rb,我收到以下错误:
C:\Documents and Settings\my\src\folder>ruby main.rb
C:/Ruby193/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- tokenizer.rb (LoadError)
from C:/Ruby193/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require '
from main.rb:1:in `<main>'
Run Code Online (Sandbox Code Playgroud)
我只是注意到,如果我使用load
而不是require
一切正常.这可能是什么问题?
正如你们中的一些人可能知道的那样,谷歌Chrome对Greasemonkey脚本有一些严重的限制.
铬不支持
@require
,@resource
,unsafeWindow
,GM_registerMenuCommand
,GM_setValue
,或GM_getValue
.
没有require,我找不到在Google Chrome下的Greasemonkey脚本中包含jQuery库的方法.
有人在这件事上有一些建议吗?
Ruby 1.9.2的最新变更集不再使当前目录.
成为您的目录LOAD_PATH
.我有一些非常重要的Rakefiles假设它.
是其中的一部分LOAD_PATH
,所以这打破了它们(他们报告"没有这样的文件加载"所有基于项目路径的require语句).这样做有什么特别的理由吗?
至于一个修复,添加$: << "."
到处都有效,但看起来非常hacky,我不想这样做.使Rakefiles 1.9.2+兼容的首选方法是什么?
我最近一直在使用nodejs并且仍然掌握模块系统,所以如果这是一个显而易见的问题,请道歉.我想要的代码大致如下所示:
a.js(主节点与节点一起运行)
var ClassB = require("./b");
var ClassA = function() {
this.thing = new ClassB();
this.property = 5;
}
var a = new ClassA();
module.exports = a;
Run Code Online (Sandbox Code Playgroud)
b.js
var a = require("./a");
var ClassB = function() {
}
ClassB.prototype.doSomethingLater() {
util.log(a.property);
}
module.exports = ClassB;
Run Code Online (Sandbox Code Playgroud)
我的问题似乎是我无法从ClassB的实例中访问ClassA的实例.
是否有正确/更好的方法来构建模块以实现我想要的?有没有更好的方法在模块之间共享变量?
在PHP脚本,调用是否include()
,require()
,fopen()
,或它们的衍生物,例如include_once
,require_once
或者甚至move_uploaded_file()
,一个经常遇到错误或警告:
无法打开流:没有这样的文件或目录.
快速找到问题根本原因的好过程是什么?
我正在使用node + express,我只是想知道如何将任何文件作为字符串导入.让我说我有一个txt文件,我想要的是将它加载到一个变量中.
var string = require("words.txt");
Run Code Online (Sandbox Code Playgroud)
我反对
modules.exports = function(){
var string = "whatever";
return string;
}
Run Code Online (Sandbox Code Playgroud) 我刚刚开始研究一个与MongoDB交互的小节点项目.但是,我似乎无法正确导入相关的节点模块,即使我已正确安装它们npm
.
例如,以下代码抛出并出错,告诉我"express没有默认导出":
import express from "express";
Run Code Online (Sandbox Code Playgroud)
但是,此代码有效:
const express = require("express");
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,import和variable/require方法的功能有何不同?我想解决困扰我项目进口的任何问题,因为它似乎可能会导致其他问题.
我有一些需要开发的东西 - 例如我想不会破坏我的分布式构建文件的模拟.
在RequireJS中,您可以在插件文件中传递配置,并根据需要调整其中的内容.
对于webpack,似乎没有办法做到这一点.首先创建一个环境中运行时配置我用resolve.alias重新指向一个取决于环境,例如,需要:
// All settings.
var all = {
fish: 'salmon'
};
// `envsettings` is an alias resolved at build time.
module.exports = Object.assign(all, require('envsettings'));
Run Code Online (Sandbox Code Playgroud)
然后在创建webpack配置时,我可以动态分配哪些文件envsettings
指向(即webpackConfig.resolve.alias.envsettings = './' + env
).
不过我想做的事情如下:
if (settings.mock) {
// Short-circuit ajax calls.
// Require in all the mock modules.
}
Run Code Online (Sandbox Code Playgroud)
但显然我不想在环境不是模拟的情况下构建那些模拟文件.
我可以再次使用resolve.alias手动将所有这些需求重新命名为存根文件 - 但是有没有一种感觉不那么hacky的方法?
我有什么想法可以做到这一点?谢谢.
我正在使用requireJS 2.x. 我发现有些教程(和官方文档)有时会使用
requirejs.config({ [...] });
requirejs(["module"]) ...
Run Code Online (Sandbox Code Playgroud)
而有时
require.config({ [...] });
require(["module"]) ...
Run Code Online (Sandbox Code Playgroud)
这两个函数(require和requirejs)之间有什么区别吗?我在文档中找不到任何关于它的文字.:(
require ×10
node.js ×3
javascript ×2
php ×2
ruby ×2
build ×1
conditional ×1
express ×1
fopen ×1
greasemonkey ×1
import ×1
include ×1
include-path ×1
jquery ×1
load-path ×1
module ×1
rake ×1
requirejs ×1
string ×1
typescript ×1
userscripts ×1
webpack ×1