Biarkan NodeJs berjalan
Langkah pertama tentu saja untuk menginstal lingkungan NodeJS. Sekarang Windows memiliki instalasi nodej yang lebih cepat, Anda dapat mengunduhnya secara langsung:
http://www.nodejs.org/download/
Unduh sesuai kebutuhan. Setelah pengunduhan selesai, cukup ikuti langkah berikutnya. Setelah itu, kita akan memiliki lingkungan NodeJS.
Langkah kedua adalah, untuk memfasilitasi operasi kami berikutnya, kami langsung melihat blog folder di disk D.
Kemudian buka alat baris perintah Windows, masukkan D disk, dan masukkan:
Salin kode sebagai berikut: Blog Express -e
Maka mungkin ada paket ketergantungan di dalamnya, kita perlu memasukkan direktori blog untuk menginstal (konfigurasi instalasi disediakan oleh package.json):
Salin kode sebagai berikut: Instal NPM
Dengan cara ini, kami mengunduh paket ketergantungan, yang tergantung pada file paket dan java dan file .net bll harus menjadi konsep
Saat ini, program kami siap berjalan:
Salin kode sebagai berikut: Aplikasi Node
Salin kode sebagai berikut: D:/Blog> Node Appexpress Server Mendengarkan di Port 3000
Saat ini, Anda akan mendapat tanggapan saat membuka browser:
Di sini kami menggunakan Express (Kerangka Pengembangan Nodejsweb yang populer) dan menggunakan mesin Templat EJS
Struktur file
Struktur direktori file inisialisasi adalah sebagai berikut:
app.js adalah file entri
package.json adalah file ketergantungan modul. Ketika kami menggunakan instalasi NPM, itu akan mengunduh paket terkait secara online sesuai dengan konfigurasinya.
Node_modules adalah file modul yang diunduh (package.json)
Toko Publik File Sumber Daya Statis
rute menyimpan file perutean
Tampilan Menyimpan file template tampilan terkait
Dengan cara ini, struktur direktori dasar kami keluar. Mari kita bicara secara singkat tentang direktori Node_Modules di sini.
node_modules/ejs
Kami baru saja mengatakan bahwa modul yang diunduh disimpan di sini. Terus terang, itu adalah kumpulan file JS
Salinan kode adalah sebagai berikut:
var parse = exports.parse = function (str, options) {
VAR OPTION = Opsi || {}
, open = options.open || ekspor.open || '<%'
, tutup = opsi.close || Ekspors.Close || '%>'
, fileName = option.filename
, compiledebug = option.compilededebug! == false
, buf = "";
buf += 'var buf = [];';
if (false! == options._with) buf += '/nwith (penduduk setempat || {}) {(function () {';
buf += '/n buf.push (/' ';
var lineno = 1;
var consumptioneol = false;
untuk (var i = 0, len = str.length; i <len; ++ i) {
var stri = str [i];
if (str.slice (i, open.length + i) == terbuka) {
i += open.length
awalan var, postfix, line = (compiledebug? '__stack.lineno =': '') + lineno;
switch (str [i]) {
case '=':
awalan = "', Escape ((" + line +', ';
postfix = ")), '";
++ I;
merusak;
kasus '-':
awalan = "', (" + line +', ';
postfix = "), '";
++ I;
merusak;
bawaan:
awalan = "');" + line + ';';
postfix = "; buf.push ('";
}
var end = str.indexof (tutup, i)
, js = str.substring (i, end)
, mulai = i
, termasuk = null
, n = 0;
if ('-' == js [js.length-1]) {
js = js.substring (0, js.length - 2);
consumeeol = true;
}
if (0 == js.trim (). indexOf ('include')) {
var name = js.trim (). slice (7) .trim ();
if (! fileName) melempar kesalahan baru ('opsi nama file diperlukan untuk include');
var path = resolveInclude (name, fileName);
termasuk = baca (path, 'utf8');
termasuk = exports.parse (termasuk, {fileName: path, _with: false, open: open, tutup: tutup, compiledebug: compiledebug});
buf + = "' + (function () {" + include + "}) () +'";
js = '';
}
while (~ (n = js.indexof ("/n", n))) n ++, lineno ++;
if (js.substr (0, 1) == ':') js = difilter (js);
if (js) {
if (js.lastIndexof ('//')> js.LastIndexof ('/n')) js += '/n';
buf += awalan;
buf += js;
buf += postfix;
}
i + = end - mulai + tutup. Panjang - 1;
} lain jika (stri == "//") {
buf += "////";
} lain jika (stri == "'") {
buf += "// '";
} lain jika (stri == "/r") {
// mengabaikan
} lain jika (stri == "/n") {
if (consumeeol) {
consumeeol = false;
} kalau tidak {
buf += "// n";
lineno ++;
}
} kalau tidak {
buf += stri;
}
}
if (false! == options._with) buf += "');}) (); /n} /nreturn buf.join (' ');";
lain buf += "');/nreturn buf.join (' ');";
return buf;
};
Sama seperti Template EJS dan Modul Ekspres yang kami gunakan di sini, kami kemudian masuk ke program EJS dengan aneh untuk melihat apa bedanya.
Setelah dibuka, ejs.js, kami menggambar beberapa kode untuk dibaca: kami lebih akrab dengan kode ini. Ini konsisten dengan kode mesin templat dari garis bawah, dan keduanya menguraikan templat menjadi string.
Kemudian ubah menjadi fungsi melalui metode eval atau fungsi baru, dan masukkan ke objek data Anda sendiri untuk penguraian.
Adapun alur kerja spesifik, kami belum tahu, jadi kami hanya dapat meletakkannya di titik selanjutnya untuk belajar. Oke, mari kita pergi ke modul lain sekarang.
app.js
Sebagai file entri, App.js memainkan peran penting:
Salinan kode adalah sebagai berikut:
/**
* Dependensi modul.
*/
var express = membutuhkan ('express');
var rute = membutuhkan ('./ rute');
var user = membutuhkan ('./ rute/pengguna');
var http = membutuhkan ('http');
var path = membutuhkan ('path');
var app = express ();
// Semua lingkungan
app.set ('port', process.env.port || 3000);
app.set ('view', path.join (__ dirname, 'views'));
app.set ('view engine', 'ejs');
app.use (express.favicon ());
app.use (express.logger ('dev'));
app.use (express.json ());
app.use (express.urlencoded ());
app.use (express.methodoverride ());
app.use (app.router);
app.use (express.static (path.join (__ dirname, 'public')));
// Pengembangan saja
if ('development' == app.get ('env')) {
app.use (Express.ErrorHandler ());
}
app.get ('/', routes.index);
app.get ('/user', user.list);
http.createServer (app) .listen (app.get ('port'), function () {
console.log ('Express Server Listening di port' + app.get ('port'));
});
Kami memuat modul ekspres dan http melalui perintah kebutuhan (), dan akan memuat pengguna indeks dan file templat lainnya di direktori rute
app.set ('port', process.env.port || 3000) adalah port saat startup
app.set ('view', __dirname + '/views') adalah jalur untuk menyimpan file template. Di mana __dirname adalah variabel global, menyimpan direktori di mana skrip saat ini berada. Kita dapat melihatnya dengan cara ini:
Salinan kode adalah sebagai berikut:
Console.log (__ dirname); // index.js Tambahkan kode berikut
/**
D:/Blog> Aplikasi Node
Express Server Li
D:/Blog/Rute
*/
Adapun bagaimana __Dirname ini diperoleh, kita tidak perlu memperhatikannya untuk saat ini
app.set ('view engine', 'ejs') mengatur mesin template ke ejs
app.use (express.favicon ()) adalah untuk mengatur ikon untuk memodifikasinya, dan kemudian Anda dapat membuat file gambar di bawah publik.
app.use (express.logger ('dev')); Express tergantung pada koneksi, dan middleware bawaan akan menghasilkan beberapa log.
app.use (express.json ()); digunakan untuk menguraikan badan permintaan, di mana string akan dikonversi secara dinamis ke objek JSON
app.use (express.methodoverride ()); Hubungkan middleware bawaan untuk menangani permintaan pos dan dapat menyamarkan put dan metode http lainnya
app.use (app.router); Hubungi Aturan Resolusi Router
app.use (express.static (path.join (__ dirname, 'public'))); Hubungkan middleware bawaan, atur publik di direktori root untuk menyimpan file statis
Salinan kode adalah sebagai berikut:
if ('development' == app.get ('env')) {
app.use (Express.ErrorHandler ());
}
Kalimat ini berarti bahwa informasi kesalahan harus output dalam kondisi pengembangan
Salinan kode adalah sebagai berikut:
app.get ('/', routes.index);
app.get ('/user', user.list);
Kedua kalimat ini adalah file pemrosesan khusus pada waktu akses. Misalnya, saat mengakses langsung di sini, akses default adalah Routes.Index.
Maka itu benar -benar mem -parsing data template di dalam:
Salinan kode adalah sebagai berikut:
ekspor.index = function (req, res) {
console.log (__ dirname);
res.render ('index', {title: 'express'});
};
Akhirnya, kode di atas akan dipanggil untuk membuat server HTTP dan mendengarkan port 3000. Setelah sukses, Anda dapat mengaksesnya di halaman web.
rute
Kami menggunakan metode ini untuk membangun rute
Salinan kode adalah sebagai berikut: app.get ('/', routes.index);
Kode di atas dapat diganti dengan kode ini (ditulis dalam aplikasi)
Salinan kode adalah sebagai berikut:
app.get ('/', function (req, res) {
res.render ('index', {title: 'express'});
});
Kode ini berarti bahwa ketika mengakses halaman beranda, mesin template EJS dipanggil untuk membuat file template index.ejs
Sekarang buat beberapa modifikasi. Kode di atas mengimplementasikan fungsi perutean, tetapi kami tidak dapat memasukkan kode yang terkait dengan perutean ke dalam aplikasi. Jika ada terlalu banyak rute, aplikasi akan menjadi kembung, jadi kami memasukkan konfigurasi yang relevan ke dalam indeks
Jadi hapus fungsi perutean yang relevan di aplikasi dan tambahkan kode ke akhir aplikasi:
Salinan kode adalah sebagai berikut: rute (aplikasi);
Kemudian ubah index.js
Salinan kode adalah sebagai berikut:
module.exports = function (app) {
app.get ('/', function (req, res) {
res.render ('index', {title: 'express'});
});
};
Bagaimana kode ini diatur belum jelas, jadi saya tidak akan memperhatikannya lagi. Mari kita lihat nanti
Aturan perutean
Express merangkum beberapa permintaan HTTP, kami biasanya menggunakan Get/Post Two
Salinan kode adalah sebagai berikut:
app.get ();
app.post ();
Parameter pertama adalah jalur permintaan, parameter kedua adalah fungsi panggilan balik, atau dua parameter adalah permintaan dan respons
Kemudian, untuk req (permintaan) ada aturan berikut
req.query menangani permintaan dan dapatkan parameter permintaan mendapatkan
req.params menangani /: xxx formul
req.body menangani permintaan pos dan mendapatkan badan permintaan pos
req.params menangani permintaan dan posting, tetapi prioritas pencarian adalah req.params-> req.body-> req.query
Aturan jalur juga mendukung keteraturan, kita akan berbicara tentang detailnya nanti ...
Tambahkan aturan perutean
Ketika kami mengakses tautan yang tidak ada:
Karena tidak ada aturan perutean untuk /y, dia tidak mengatakan file di bawah publik, jadi itu 404
Sekarang kami menambahkan rute yang relevan di index.js:
Salinan kode adalah sebagai berikut:
module.exports = function (app) {
app.get ('/', function (req, res) {
res.render ('index', {title: 'express'});
});
app.get ('/y', function (req, res) {
res.send ('ye xiaochai');
});
};
Di sini saya memiliki halaman kacau:
Alasannya adalah setelah mengunduh, file saya adalah pengkodean GBK. Kita hanya perlu mengubahnya menjadi UTF-8. Kami tidak peduli dengan mesin template. Mari kita pergi ke bagian berikutnya.
Fungsi pendaftaran
Di sini kami mengikuti blogger asli untuk melakukan fungsi pendaftaran sederhana, menggunakan Mongo DB sebagai database, dan kemudian kami akan meningkatkan fungsi pada gilirannya
Buat rute register baru dan buat templat register baru untuk itu, jadi mari kita mulai
① Buat rute baru dalam indeks
Salinan kode adalah sebagai berikut:
app.get ('/register', function (req, res) {
res.render ('index', {title: 'Register Page'});
});
Salinan kode adalah sebagai berikut:
module.exports = function (app) {
app.get ('/', function (req, res) {
res.render ('index', {title: 'express'});
});
app.get ('/y', function (req, res) {
res.send ('ye xiaochai');
});
app.get ('/register', function (req, res) {
res.render ('register', {title: 'Register Page'});
});
Salinan kode adalah sebagai berikut:
<! Doctype html>
<Html>
<head>
<title> < %= title %> </itement>
<tautan rel = 'stylesheet' href = '/stylesheets/style.css'/>
</head>
<body>
<h1> < %= judul %> </h1>
<Form Method = "Post">
<div> Nama pengguna: <input type = "text" name = "name"/> </div>
<div> Kata sandi: <input type = "password" name = "password"/> </div>
<div> <input type = "kirim" value = "login"/> </div>
</form>
</body>
</html>
Dengan cara ini, halaman kami terbentuk:
Dengan program dasar, kami sekarang membutuhkan dukungan database, jadi kami perlu menginstal lingkungan MongoDB
Mongodb
MongoDB adalah NoSQL berdasarkan penyimpanan file terdistribusi. Itu ditulis dalam C ++. Struktur data yang didukung oleh MongoDB longgar, mirip dengan JSON. Kami tahu bahwa JSON dapat mendukung jenis apa pun, sehingga kami dapat membuat struktur yang sangat kompleks.
Salinan kode adalah sebagai berikut:
{
ID: 1,
Nama: 'kamu xiaochai',
Frinds: [
{id: 2, name: 'su huanzhen'},
{id: 3, nama: 'buku satu halaman'}
]
}
Instal MongoDB
Pertama, buka http://www.mongodb.org/downloads untuk mengunduh file instalasi, lalu salin file ke disk dan ganti nama mongoDB, dan kemudian buat folder blog baru di dalamnya
Kemudian buka alat baris perintah untuk mengganti direktori ke bin dan masukkan:
Salin kode sebagai berikut: mongod -dbpath d:/mongodb/blog
Atur folder blog ke direktori proyek dan mulai database. Demi kenyamanan, kami akan menulis perintah dan klik langsung untuk memulai database:
Salin kode sebagai berikut: D: /MongoDB/bin/mongod.exe -dbpath D:/MongoDB/Blog
Tautan ke MongoDB
Setelah database diinstal dengan sukses, program kami juga membutuhkan program "driver" yang relevan untuk menautkan database. Tentu saja, paket perlu diunduh ...
Buka package.json untuk menambahkan baris baru dalam dependensi
Salinan kode adalah sebagai berikut:
{
"Nama": "Aplikasi-Nama",
"Versi": "0.0.1",
"Pribadi": Benar,
"Scripts": {
"Mulai": "node app.js"
},
"dependensi": {
"Express": "3.4.8",
"ejs": "*",
"MongoDB": "*"
}
}
Kemudian jalankan instalasi NPM untuk mengunduh paket ketergantungan baru. Dengan cara ini, pengemudi yang terkait dengan MongoDB tersedia. Untuk menautkan MySQL dan database lainnya, paket ketergantungan lainnya diperlukan.
Saat ini, buat file pengaturan.js di direktori root untuk menyimpan informasi koneksi database
Salinan kode adalah sebagai berikut:
module.exports = {
cookiesecret: 'myblog',
DB: 'Blog',
Tuan rumah: 'Localhost'
};
DB adalah nama database, host adalah alamat database, cookiesecret digunakan untuk enkripsi cookie dan tidak ada hubungannya dengan database
Selanjutnya, buat folder model baru di direktori root dan buat db.js baru di folder model
Salinan kode adalah sebagai berikut:
var pengaturan = membutuhkan ('../ pengaturan'),
Db = membutuhkan ('mongoDb'). Db,
Koneksi = membutuhkan ('mongoDb'). Koneksi,
Server = membutuhkan ('mongoDb'). Server;
module.exports = db baru (settings.db, server baru (settings.host, connection.default_port), {safe: true});
Salinan kode adalah sebagai berikut: DB baru (settings.db, server baru (settings.host, connection.default_port), {safe: true});
Atur nama database, alamat basis data, dan port basis data untuk membuat instance database dan mengekspor instance melalui module.Exports, sehingga database dapat dibaca dan ditulis dengan membutuhkan
Kita perlu berhasil menulis ke database, dan program sisi server perlu memproses informasi posting, jadi kami membuat pengguna baru.js di folder model
Salinan kode adalah sebagai berikut:
var mongodb = membutuhkan ('./ db');
fungsi pengguna (pengguna) {
this.name = user.name;
this.password = user.password;
};
module.Exports = pengguna;
// Menyimpan informasi pengguna
User.prototype.save = function (callback) {
// dokumen pengguna yang akan disimpan dalam database
var user = {
Nama: this.name,
Kata Sandi: This.Password
};
// Buka database
mongodb.open (function (err, db) {
if (err) {
return callback (err); // kesalahan, kembalikan informasi kesalahan
}
// Baca koleksi pengguna
db.collection ('Users', function (err, collection) {
if (err) {
mongoDb.close ();
return callback (err); // kesalahan, kembalikan informasi kesalahan
}
// Masukkan data pengguna ke dalam koleksi pengguna
collection.insert (pengguna, {
Aman: Benar
}, fungsi (err, pengguna) {
mongoDb.close ();
if (err) {
return callback (err); // kesalahan, kembalikan informasi kesalahan
}
callback (null, pengguna [0]); //Kesuksesan! err is nol dan mengembalikan dokumen pengguna yang disimpan
});
});
});
};
Salinan kode adalah sebagai berikut:
// Baca informasi pengguna
User.get = function (name, callback) {
// Buka database
mongodb.open (function (err, db) {
if (err) {
Kembalikan panggilan balik (err); // kesalahan, kembalikan informasi err
}
// Baca koleksi pengguna
db.collection ('Users', function (err, collection) {
if (err) {
mongoDb.close ();
Kembalikan panggilan balik (err); // kesalahan, kembalikan informasi err
}
// Temukan Dokumen dengan Nama Pengguna (Kunci Nama) Nama Nilai
collection.findone ({
Nama: Nama
}, fungsi (err, pengguna) {
mongoDb.close ();
if (err) {
Kembalikan Callback (err); // Gagal! Kembali ke informasi err
}
Callback (null, user); // Success! Kembalikan Informasi Pengguna Kueri
});
});
});
};
Di sini satu menulis data dan yang lainnya membaca data. Ada prosesor. Sekarang Anda perlu menambahkan program berikut di depan index.js.
Salinan kode adalah sebagai berikut: var user = membutuhkan ('../ model/user.js');
Ubah app.post ('/register')
Salinan kode adalah sebagai berikut:
app.post ('/register', function (req, res) {
var name = req.body.name;
var pwd = req.body.password;
var newUser = pengguna baru ({
Nama: Nama,
Kata sandi: PWD
});
newUser.save (function (err, user) {
// Operasi Terkait, Sesi Tulis
res.send (pengguna);
});
});
Kemudian klik untuk mendaftar dan Anda akan memiliki reaksi
Jika Anda tidak dapat menentukan apakah akan menulis ke database saat ini, Anda dapat memasukkan database untuk kueri dan pertama beralih ke direktori database
Salin kode sebagai berikut: D:/MongoDB/bin>
memasuki:
Salin kode sebagai berikut: Mongo
Kemudian beralih databasinya untuk terhubung ke blog
Salin kode sebagai berikut: Gunakan blog
Input terakhir
Salin kode sebagai berikut: db.users.find ()
Kami semua dengan senang hati melihat data yang ditulis, jadi pembelajaran hari ini telah berakhir untuk sementara waktu
Kesimpulan
Hari ini kami mengikuti blog untuk menyelesaikan operasi dari instalasi hingga menulis ke database. Mari kita tambahkan aspek lain besok dan secara bertahap memperdalam pembelajaran nodej.