2015-05-28 2 views
1

Я новичок в javascript try out cordova, который в значительной степени использует модуль require(). Я просмотрел некоторые уроки для этого, как here. Я пробовал очень простой пример из этого урока, и что-то не хватает.Загрузка модулей с требованием в Cordova

Это мой 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"; 
}; 

При нажатии на кнопке мыши, он выдает ошибку, что а не определены. Есть ли что-то, что мне не хватает здесь, чтобы использовать модуль? Большое спасибо.

+0

Похоже, вы используете пример узла js (серверная сторона) в браузере (на стороне клиента). Если вы хотите использовать «require» в браузере, вам понадобится что-то вроде RequireJS. Это может быть лучше для начала: http://requirejs.org/docs/start.html – stakolee

+0

Большое спасибо! Я изучу этот учебник. Ты прав. Я перепутал серверную сторону js с клиентской стороной. –

ответ

1

Фактически module.require не предназначен для браузера. Вы не можете использовать его, как вы делаете прямо внутри script -tag. require предназначен для node.js (серверный javascript).

Если вы хотите использовать его в браузере, вы должны использовать предварительную обработку. Например, вы можете использовать browserify.

Чтобы узнать больше - отлично 3 мин видео CommonJS modules

+0

Большое спасибо за помощь. :) –

1

Вы не можете использовать require/module.exports изначально в браузере. Он встроен в Node.js/io.js и может запускаться на сервере.

Если вы хотите использовать модули require()/CommonJS в браузере, просмотрите RequireJS.

Если вы хотите запустить узел/io.js код в браузере в целом (включая, но не ограничиваясь require()/CommonJS), посмотрите на Browserify или webpack.

Поскольку вы говорите, что используете кордову, я предполагаю, что вам действительно не нужно require(). Просто напишите свой HTML/CSS/JavaScript, как обычно, и используйте кордову, чтобы упаковать ее. cordova использует require() много, но это не должно влиять на код вашего приложения.

+0

Спасибо тонну. :) –