![](/img/trans.png)
[英]Use of jquery noconflict function when including external js libraries and js code files
[英]Nodejs with ExpressJS including external js code files for use
在這里學習NodeJS ......我把這個非常基本的“類”文件放到外部JS文件中。 如何使我的所有路由文件和/或其他外部js文件(我也想加載)看到?
/classes/music/usermanager.js
function User(){
this.email = "";
this.password = "";
this.userid = "";
}
function UserManager()
{
this.user = new User();
}
UserManager.prototype.login = new function (email, password){
var db = new DbManager();
db.Open();
params = {
$email : email,
$password : password
}
db.serialize(function(){
db.get("SELECT * FROM Users WHERE email = $email and password = $password", params, function(err,row) {
if (!err && row) {
//log in passed
this.user.userid = row.user.id;
this.user.email = row.user.email;
this.user.password = row.user.password;
return this.user;
}
else if (!err) {
//log in failed log event
return null;
}
else {
//error happened through out an event to log the error
return null;
}
});
});
}
/config/strategies/local.strategy.js我將如何在另一個文件中使用它的示例。
var passport = require('passport');
LocalStrategy = require('passport-local').Strategy;
module.exports = function () {
passport.use(new LocalStrategy({
usernameField: 'email',
passwordField: 'password'
},
function (email, password, done) {
//vadliating user here
var userManager = new UserManager();
var user = userManager.login(email, password);
done(null, user);
}));
};
我嘗試在我的app.js文件中執行類似這樣的操作,並且在編譯時說“拋出新的TypeError('app.use()需要中間件函數');”。 我可以發誓我讀到了你可以做到的地方,但現在找不到資源了。
/asp.js
/*load external js library files for application use*/
app.use ("./classes/music/:path*");
在嘗試組織nodejs / expressjs項目時,感覺我仍然缺少基本的理解。
您實際上在一個示例中使用了答案。 您可以使用module.exports = whatever;
使模塊可用module.exports = whatever;
。 這意味着您可以導出任何字符串,對象或“類”。 因此,您可以通過將此管理器添加到文件末尾(或實際上任何位置)來導出UserManager
。
module.exports = UserManager;
並通過使用其相對文件路徑在另一個文件管理器中要求它。 所以如果它在同一個目錄中。
var UserManager = require('./usermanager.js');
因此,對於需要UserManager的local.strategy.js文件,它看起來像:(如果你的文件路徑都在同一根目錄下)
var UserManager = require('../../classes/music/usermanager.js');
/classes/music/usermanager.js
// Working for me, try it, hope this may help you
var model = module.exports;
function User() {
this.email = "";
this.password = "";
this.userid = "";
}
function UserManager() {
this.user = new User();
}
UserManager.prototype.login = function(email, password) {
var db = new DbManager();
db.Open();
params = {
$email : email,
$password : password
}
db.serialize(function(){
db.get("SELECT * FROM Users WHERE email = $email and password = $password", params, function(err,row) {
if (!err && row) {
//log in passed
this.user.userid = row.user.id;
this.user.email = row.user.email;
this.user.password = row.user.password;
return this.user;
}
else if (!err) {
//log in failed log event
return null;
}
else {
//error happened through out an event to log the error
return null;
}
});
});
};
model.login = function (email, password){
var usrmng = new UserManager();
return usrmng.login(email, password);
};
/config/strategies/local.strategy.js
var usermanager = require('./usermanager'); // path to ur file
var passport = require('passport');
LocalStrategy = require('passport-local').Strategy;
module.exports = function () {
passport.use(new LocalStrategy({
usernameField: 'email',
passwordField: 'password'
},
function (email, password, done) {
//vadliating user here
//var userManager = new UserManager();
var use = usermanager.login(email, password);
done(null, user);
}));
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.