Famo.us连接到MySQL
我正在尝试通过Famo.us连接MySQL数据库。但我做不到。应用程序的文件夹结构如下所示:Famo.us连接到MySQL,mysql,node.js,requirejs,famo.us,Mysql,Node.js,Requirejs,Famo.us,我正在尝试通过Famo.us连接MySQL数据库。但我做不到。应用程序的文件夹结构如下所示: 应用程序(实际上是著名的美国应用程序) 内容(图像等) 解放党 src main.js(实际上是应用程序) RequireFig.js 风格 咕噜声 节点单元 main.js /*globals define*/ define(function(require, exports, module) { 'use strict'; // import dependencies
- 应用程序(实际上是著名的美国应用程序)
- 内容(图像等)
- 解放党
- src
- main.js(实际上是应用程序)
- RequireFig.js
- 风格
- 咕噜声
- 节点单元
/*globals define*/
define(function(require, exports, module) {
'use strict';
// import dependencies
var Engine = require('famous/core/Engine');
var ImageSurface = require('famous/surfaces/ImageSurface');
var StateModifier = require('famous/modifiers/StateModifier');
// create the main context
var mainContext = Engine.createContext();
// your app here
var logo = new ImageSurface({
size: [200, 200],
content: '/content/images/famous_logo.png'
});
var logoModifier = new StateModifier({
origin: [0.5, 0.5]
});
mainContext.add(logoModifier).add(logo);
});
define(function(require, exports, module) {
var socket = io.connect('http://localhost:9001');
socket.on('news', function(data) {
console.log(data);
socket.emit('my other event', { my: data });
});
});
因为它在节点上运行,我尝试在node_modules文件夹中成功安装mysql node_模块。但是我无法连接到它,因为如果我尝试在main.js中使用require('mysql')来请求mysql,它会认为我想尝试src文件夹中的js文件。我不能直接指向node_modules文件夹,因为它也给了我一个404错误,而且根据famo.us的文档,这不是实现它的方法
因此,我尝试通过这种方式将mysql代码添加到main.js中,但它也不起作用:
mysql节点:
require(['mysql'], function(mysql) {
//foo and bar are loaded according to requirejs
//config, but if not found, then node's require
//is used to load the module.
//Now export a value visible to Node.
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : 'test',
database : 'app'
});
window.console.log(mysql);
});
RequireFig.js
/*globals require*/
require.config({
nodeRequire: require,
shim: {
},
paths: {
famous: '../lib/famous',
requirejs: '../lib/requirejs/require',
almond: '../lib/almond/almond',
'famous-polyfills': '../lib/famous-polyfills/index'
}
});
require(['main']);
我之前没有将requireJS与Node结合使用,Famo.us是一个非常新的版本,所以他们还没有连接mysql数据库的文档。所以我完全迷路了。有谁知道这个问题的解决方法吗?你可能只是从错误的角度看待这个问题。Famo.us是一个客户端动画和物理引擎。它不打算在服务器上使用。Famoo.us也完全是后端不可知论者,因为它并不关心服务器端到底发生了什么 您在著名代码中看到的“require”函数与节点中的“require”函数不同。节点使用CommonJS模块模式,而RequireJS则不同。这已经解释得更详细了
简而言之,您的问题是您试图让客户端代码执行服务器端的工作,这是不对的。您的节点服务器应该提供所需的所有客户端文件,并且要向数据库之类的对象发出请求,客户端应该向服务器发出API请求以执行某些操作。理想情况下,您希望使用客户端MVC(主干、余烬、角度),以进一步防止数据污染处理演示文稿的代码。美国著名的例子现在并没有真正讨论这个问题。解决了这个问题。我启动了一个连接到的额外节点 connect.js
// The actual grunt server settings
module.exports = function (grunt) {
'use strict';
return {
options: {
port: grunt.option('port') || 1337,
livereload: grunt.option('livereload') || 35729,
// Change this to '0.0.0.0' to access the server from outside
hostname: grunt.option('hostname') || '0.0.0.0'
},
livereload: {
options: {
open: true,
base: [
'.tmp',
'<%= config.app %>'
]
},
middleware: function (connect) {
return [
require('./server.js') // your server packaged as a nodejs module
]
}
},
dist: {
options: {
open: true,
base: '<%= config.dist %>',
livereload: false,
}
}
};
};
index.html
<!DOCTYPE HTML>
<html>
<head>
<title>Narrowcasting</title>
<meta name="viewport" content="width=device-width, maximum-scale=1, user-scalable=no" />
<meta name="mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<link rel="stylesheet" type="text/css" href="lib/famous/core/famous.css" />
<!-- build:css(app/) css/app.css -->
<link rel="stylesheet" type="text/css" href="styles/app.css" />
<!-- bower:css -->
<!-- endbower -->
<!-- endbuild -->
<!-- build:js(app/) src/polyfills.js -->
<script type="text/javascript" src="lib/famous-polyfills/functionPrototypeBind.js"></script>
<script type="text/javascript" src="lib/famous-polyfills/classList.js"></script>
<script type="text/javascript" src="lib/famous-polyfills/requestAnimationFrame.js"></script>
<!-- endbuild -->
<!-- process:remove:dev -->
<script src="http://localhost:9001/socket.io/socket.io.js"></script>
<script type="text/javascript" src="src/main.js"></script>
<!-- /process -->
<!-- process:remove:dist -->
<script type="text/javascript" src="lib/requirejs/require.js" data-main="src/requireConfig"></script>
<!-- /process -->
</head>
<body></body>
</html>
define(function(require, exports, module) {
var socket = io.connect('http://localhost:9001');
socket.on('news', function(data) {
console.log(data);
socket.emit('my other event', { my: data });
});
});