在Cordova中加载带有require的模块

时间:2015-05-28 14:22:26

标签: javascript node.js cordova

我是javascript尝试使用模块require()的cordova的新手。我为here完成了一些教程。 我在本教程中尝试了一个非常简单的例子,似乎有些东西不见了。

这是我的HTML代码。

 <script>
 var abc = require("js/greeting.js");
        function mod() {
            try{

                var g =  abc.sayHelloInEnglish();
            console.log("reached the call");
            document.getElementById("modl").innerHTML = g;
            }
            catch(err){
                console.log("error is" + err.message);
            }   
        }
    </script>
    <button onclick="mod()">click</button>

这是我的greeting.js

的代码
  //var exports = module.exports = {};

exports.sayHelloInEnglish = function() {
    return "HELLO";
};

exports.sayHelloInSpanish = function() {
    return "Hola";
};

当我点击按钮点击时,它会给出一个错误,即没有定义abc。我在这里缺少使用该模块的东西吗? 非常感谢。

4 个答案:

答案 0 :(得分:3)

实际上module.require不适用于浏览器。你不能像在script - 标签内那样使用它。 require用于node.js(服务器端javascript)。

如果要在浏览器中使用它,则应使用预处理。例如,您可以使用browserify

了解详情 - 很棒的3分钟视频CommonJS modules

答案 1 :(得分:2)

您无法在浏览器中原生使用require / module.exports。它内置于Node.js / io.js中,可以在服务器上运行。

如果您想在浏览器中使用require() / CommonJS模块,请查看RequireJS

如果您想在浏览器中运行Node / io.js代码(包括但不限于require() / CommonJS),请查看Browserifywebpack

既然你说你使用的是cordova,我猜你根本不需要require()。只需像平常一样编写HTML / CSS / JavaScript,然后使用cordova将其打包。 cordova大量使用require(),但这不会影响您应用的代码。

答案 2 :(得分:0)

现在你可以使用这个 npm 包了 https://www.npmjs.com/package/cordova-import-npm

<块引用>

将文件从 npm 包导入到您的cordova www/ 目录中 自动,在cordova准备,cordova构建或cordova运行时,和 在处理其他任何事情之前。

通常我们想导入 npm 中可用的最新文件 打包到我们在cordova 项目中的www/ 目录中。有了这个模块 您可以自动完成,而无需构建自己的脚本。

答案 3 :(得分:0)

您可以在 require.js 中使用定义来传递函数或结果。我一直在努力使用cordova,因为人们需要非常小心,代码需要干净。如果您只需要将结果作为对象或任何内容放在定义的函数中并稍后调用它,Define 将帮助您。

// obj.js script
define(function(){
{name: "joe",
lastname:"doe"}
})

在另一个脚本中,您只需要文件并将其传递给变量。我想你甚至可以去掉 obj 脚本中的内括号。

//other.js
var string = require(["obj"])
console.log(string.name) // joe