लब्बोलुआब यह है: नोड .js एक परियोजना बनाने के लिए एक टर्नकी समाधान प्रदान नहीं करता है। नोड.जेएस पर मेरी पहली परियोजना में आईडीई से चलाने के लिए एक कॉफ़ीस्क्रिप्ट फ़ाइल और run.js शामिल थे। जब पांच मार्ग थे, तो सब कुछ अद्भुत था, लेकिन जब मॉडल और मार्गों के साथ यह परियोजना समाप्त हो गई, तो यह नरक में बदल गया। वे इस समस्या को विभिन्न तरीकों से हल करते हैं, कोई हब का उपयोग करता है, कोई वैश्विक, कोई एक फ़ाइल में सब कुछ डालता है।
ध्यान दें: समाधान केवल सही होने का ढोंग नहीं करता है और आम तौर पर सही होता है। बस साझा करने का फैसला किया। नोड पर नोड। जेएस बनाम एरलैंग कृपया नस्ल न करें, वे विभिन्न श्रेणियों में हैं।
अधीर के लिए,
जीथब पर एक परियोजना है।
MR - मॉडल रूट, View I omit क्योंकि res.json एक दृश्य नहीं है, और सेवा को अधिक की आवश्यकता नहीं है।
परियोजना संरचना:
├── app.coffee ├── config.coffee ├── models │ └── example.coffee ├── package.json ├── public │ ├── images │ ├── javascripts │ └── stylesheets ├── routes │ ├── index.coffee │ └── root.coffee ├── run-cluster.js └── run.js
app.coffee
यह आवेदन के लिए प्रवेश बिंदु है।
exports.start = () -> log = require('logule') # log.debug "Spawning new worker" require 'coffee-script' # , .coffee require ### Basic dependencies ### express = require 'express' app = module.exports = express.createServer() app.__ = require 'underscore' # app.mongoose = require 'mongoose' # ODM MongoDb, and yes, it's web scale app.log = log # config = require('./config.coffee')(app,express) # models = {} # models.example= require('./models/example')(app.mongoose).model # require('./routes/index.coffee')(app, models) # , port = process.env.PORT || 5000 # Heroku app.listen port log.info "Express server listening on port #{port}"
config.coffee
module.exports = (app, express) -> config = this app.configure -> app.use express.bodyParser() app.use express.methodOverride() app.use app.router app.use express.static(__dirname + '/public') app.configure 'development', () -> app.use express.errorHandler({dumpExveption: true, showStack: true}) # "" app.mongoose.connect process.env.MONGOLAB_URI || "mongodb://localhost/skel" # heroku app.configure 'production', () -> app.use express.errorHandler() app.mongoose.connect "mongodb://localhost/production" return config
मॉडल / उदाहरण
module.exports = (mongoose) -> Schema = mongoose.Schema ObjectId = Schema.ObjectId #Comment = mogoose.model('Comment') # , mongoose. PostSchema = new Schema { author : { type:ObjectId, index:true } date : Date, content : String #, comments : [Comment] # } this.model = mongoose.model('Post', PostSchema) # return this
package.json
इंजन खंड हेरोकू के लिए है, बाकी सब कुछ स्पष्ट है।
{ "name": "mr-skel" , "version": "0.0.1" , "private": true , "engines": { "node": "0.6.x", "npm": "1.xx" } , "dependencies": { "express": "2.5.x" , "mongoose": "2.6.x" , "mongoose-types": "*" , "underscore": "*" , "coffee-script": "*" , "logule": "0.xx" }, "devDependencies": { "forever": "*" , "mocha": "*" , "should": "*" } }
मार्ग / अनुक्रमणिका
यह फ़ाइल उन सभी मार्गों को संग्रहीत करती है जो अनुप्रयोग में हैं।
routes = {} routes.root = require('./root.coffee') module.exports = (app, models) -> app.get '/', routes.root.getIndex(models)
मार्गों / root
exports.getIndex = (models) -> (req, res) -> Post = models.example Post.find {}, (err, posts) -> if err? return res.send 500 res.json { status: 'Ba dum tssh', meta: posts }
रन-cluster.js
क्लस्टर API का उपयोग करके एक एप्लिकेशन लॉन्च करें। यह हरोकू पर काम नहीं करता है, लेकिन अपने vps पर मैं इस तरह से एप्लिकेशन लॉन्च करता हूं।
cluster = require('cluster'); log = require('logule'); require('coffee-script'); if (cluster.isMaster) { log.info("Master have just started"); # i = - for (i = 1; i <= 2; i++) { cluster.fork(); } cluster.on('death', function(worker) { log.error("Worker " + worker.pid + " died!"); return cluster.fork(); }); } else { app = require('./app.coffee'); app.start() }
run.js
require('coffee-script'); app = require('./app.coffee'); app.start();