Rumah > hujung hadapan web > tutorial js > 3 JavaScript Orms yang mungkin anda tidak tahu

3 JavaScript Orms yang mungkin anda tidak tahu

Lisa Kudrow
Lepaskan: 2025-02-19 08:56:17
asal
763 orang telah melayarinya

3 JavaScript ORMs You Might Not Know

mata teras

    Artikel ini memperkenalkan tiga orm JavaScript yang boleh digunakan untuk menguruskan data kompleks dalam aplikasi: bookshelf.js, Sequelize, dan Lovefield. Bookshelf.js dan Sequelize direka untuk node.js dan berfungsi dengan baik dengan PostgreSQL, MySQL, MariaDB, SQLite3, dan MSSQL. LoveField adalah pangkalan data relasi aplikasi Web yang dibina di IndexEdDB, yang dibangunkan oleh Google.
  • bookshelf.js dan Sequelize membolehkan pemaju membuat hubungan satu-ke-satu, satu-banyak dan banyak-banyak antara jadual. Mereka juga menyokong urus niaga, hubungan, bacaan dan replikasi. Walaupun Lovefield tidak menyokong pertanyaan SQL mentah, ia meniru sintaks SQL dan menyokong urus niaga asid, sekatan dan melangkau, pertanyaan parameter, dll.
  • Walaupun pengetahuan SQL adalah penting kepada pemaju, JavaScript Orm dapat memudahkan kerja dengan mengendalikan data kompleks dan interaksi pangkalan data. Pemilihan ORM harus berdasarkan keperluan khusus projek, kerumitan pangkalan data, dan fungsi yang diperlukan.
JavaScript mempunyai lebih daripada sekadar skrip penyemak imbas dan laman web interaktif. Ia boleh digunakan hampir di mana sahaja:

    Bahagian penyemak imbas: Tidak perlu terhad kepada ECMAScript dan DOM API. Coffeescript dan Dart menyusun bahasa JavaScript tulen yang dapat membantu anda menulis kod lebih cepat dan lebih baik.
  • Sisi pelayan: Bilangan node.js dan kerangka banyaknya semakin meningkat, membantu pemaju depan menjadi pemaju penuh.
  • Aplikasi mudah alih: Menggunakan rangka kerja seperti Cordova dan Ionic atau NativeScript, anda boleh membina aplikasi mudah alih dengan lebih cepat tanpa mempelajari bahasa lain seperti Java atau Swift/Objektif-C. Dengan rangka kerja ini, anda juga boleh berkongsi kod sumber antara platform mudah alih.
  • iot: SitePoint telah menerbitkan beberapa artikel oleh Patrick Catanzariti, yang sangat membantu dalam hal ini.
Oleh kerana kerumitan aplikasi pembangunan meningkat, anda memerlukan alat untuk membantu anda memproses semua data yang disimpan dalam pangkalan data, sama ada dalam pelayan pangkalan data (seperti PostgreSQL), dalam SQLite tertanam untuk peranti mudah alih, atau di dalam penyemak imbas. Inilah yang dilakukan oleh Orm. Komuniti Java mempunyai hibernate, pemaju PHP boleh menggunakan doktrin Orm, dan komuniti JavaScript juga mempunyai ORM sendiri. Dalam artikel ini, saya akan meliputi beberapa Orm JavaScript yang dapat membantu anda mengendalikan data kompleks dalam aplikasi seterusnya.

bookshelf.js

bookshelf.js adalah node.js orm yang direka untuk berfungsi dengan baik dengan PostgreSQL, MySQL, MariaDB, dan SQLite3. Ia dibina di Knex SQL Query Builder dan mengikuti beberapa corak dalam Backbone.js, seperti model dan koleksi dan konvensyen penamaan yang serupa. Jika anda pernah menggunakan Backbone, anda mungkin terbiasa dengan rak buku dengan cepat. Untuk memasang rak buku, anda perlu memasang Knex dan pemacu pangkalan data:

# 获取 knex
$ npm install knex --save

# 获取 bookshelf
$ npm install bookshelf --save

# 获取其中一个数据库驱动程序
$ npm install pg
$ npm install mysql
$ npm install mariasql
$ npm install sqlite3
Salin selepas log masuk
Salin selepas log masuk

Selepas pemasangan selesai (pastikan untuk lulus bendera -save supaya ia ditambahkan ke fail pakej.json), anda boleh menggunakannya dalam aplikasi Node.js anda seperti ini:

var knexInstance = require('knex')({
  client: 'mysql', // 或您正在使用的数据库
  connection: {
    host     : '127.0.0.1',
    user     : 'scott',
    password : 'tiger', // Scott 的猫的名字
    database : 'db_name',
    charset  : 'utf8'
  }
});
// 通过传递 Knex 实例来初始化 Bookshelf
var bookshelf = require('bookshelf')(knexInstance); 

var User = bookshelf.Model.extend({
  tableName: 'users'
});
Salin selepas log masuk
Salin selepas log masuk
Seperti yang anda lihat, buat objek rak buku dengan meluluskan contoh Knex sebagai parameter. Anda kemudian boleh menggunakan kaedah Extend () model untuk membuat model dalam aplikasi anda, sama seperti model pengguna yang digunakan untuk jadual pengguna dalam contoh di atas. Ingat bahawa rak buku adalah satu -satunya contoh rak buku yang harus anda gunakan sepanjang aplikasi anda. Oleh itu, lebih baik untuk menjadikannya di mana -mana dalam aplikasi anda, seperti membungkusnya dalam singleton atau meletakkannya dalam fail yang berbeza dan memperkenalkannya jika diperlukan. Rak buku membolehkan anda mempunyai satu-satu, satu-ke-banyak dan banyak hubungan banyak. Dalam kes kita, ia akan sama dengan:

var User = bookshelf.Model.extend({
  tableName: 'users',
  posts: function() {
    return this.hasMany(Post);
  }
});

var Post = bookshelf.Model.extend({
  tableName: 'posts',
  user: function() {
    return this.belongsTo(User);
  }
});
Salin selepas log masuk
Salin selepas log masuk
Jika anda ingin menyemaknya, anda boleh mencari rak buku di GitHub.

Sequelize

Sequelize adalah satu lagi orm node.js dan io.js (mereka akhirnya digabungkan bersama). Ia menyokong PostgreSQL, MySQL, MariaDB, SQLite dan MSSQL, dan mempunyai sokongan transaksi yang kuat, hubungan, membaca dan replika fungsi. Anda boleh memasangnya dengan menjalankan arahan berikut:

# 安装 Sequelize
$ npm install --save sequelize

# 安装数据库驱动程序
$ npm install --save pg pg-hstore

# 对于 mysql 和 mariadb 方言
$ npm install --save mysql 
$ npm install --save sqlite3

# MSSQL
$ npm install --save tedious
Salin selepas log masuk
Sekarang anda boleh menggunakannya seperti yang ditunjukkan dalam contoh berikut:

var Sequelize = require('sequelize');
var sequelize = new Sequelize('database', 'username', 'password', {
  host: 'localhost',
  dialect: 'mysql'|'mariadb'|'sqlite'|'postgres'|'mssql', // 使用其中一个

  pool: {
    max: 5,
    min: 0,
    idle: 10000
  },

  // 仅限 SQLite
  storage: 'path/to/database.sqlite'
});

// 或者您可以简单地使用连接 uri
var sequelize = new Sequelize('postgres://user:pass@example.com:5432/dbname');
Salin selepas log masuk
Sama seperti bookshelf.js, anda hanya memerlukan sambungan pangkalan data. Selepas itu, anda boleh membuat model, contohnya:

var User = sequelize.define('user', {
  firstName: {
    type: Sequelize.STRING,
    field: 'first_name' // `first_name` 列与 User.firstName 匹配
  },
  lastName: {
    type: Sequelize.STRING
  }
}, {
  freezeTableName: true // 模型 tableName (`user`) 将与模型名称相同
});
Salin selepas log masuk
Sequelize.string di atas sepadan dengan Varchar dalam SQL. Jenis data lain adalah sekuel.integer untuk integer dan sequelize.blob untuk gumpalan (atau bytea dalam postgres). Anda boleh membaca senarai penuh di sini. Sequelize membolehkan anda menulis hubungan antara jadual. Sebagai contoh, jika anda mempunyai model yang dipanggil Projek dan model lain yang dipanggil Pemaju dan ingin memberikan beberapa pemaju kepada projek, anda boleh melakukan ini:

Project.hasMany(Developer, {as: 'devs'})
Salin selepas log masuk
Ini akan memastikan bahawa bidang yang diperlukan ditambah kepada setiap model (dalam kes ini Project_ID dalam model pemaju). Atau, jika anda rasa anda tidak boleh mendapat manfaat daripada API Sequel, anda boleh menjalankan pertanyaan SQL mentah. Sequelize juga boleh didapati di GitHub.

Lovefield

Lovefield bukan Orm sebenar. Ia sebenarnya merupakan pangkalan data relasi untuk aplikasi web, yang dibina di IndexEdDB, yang dibangunkan oleh Google, dan ditulis sepenuhnya dalam JavaScript. Ia tidak menyokong pertanyaan SQL mentah, tetapi ia dilengkapi dengan API yang cuba meniru sintaks SQL. Anda boleh memasangnya menggunakan Bower:

$ bower install lovefield --save
Salin selepas log masuk
atau npm:

$ npm install lovefield --save
Salin selepas log masuk
Selepas menambahkannya ke fail HTML, anda boleh mula menggunakannya sebagai pangkalan data relasi depan. Membuat pangkalan data dan jadual adalah mudah:

// 为“待办事项列表”创建数据库
var todoDB = lf.schema.create('todo_db', 1);

var item = todoDB.createTable('items')
      .addColumn('id', lf.Type.INTEGER)
      .addColumn('task', lf.Type.STRING)
      .addColumn('deadline', lf.Type.DATE_TIME)
      .addColumn('done', lf.Type.BOOLEAN)
      .addPrimaryKey(['id']);
Salin selepas log masuk
Coretan kod ini menunjukkan cara membuat pangkalan data bernama TODO_DB dan jadual yang dinamakan item, serta lajur yang diberikan (ID sebagai kunci utama, tugas, tarikh akhir, dan selesai). Pada ketika ini, untuk mendapatkan senarai semua tugas yang belum selesai, kod itu akan menjadi:

todoDB.select()
  .from(item)
  .where(item.done.eq(false))
  .exec(); // exec() 返回一个 Promise
Salin selepas log masuk
Kod di atas sangat serupa dengan SQL, di mana pertanyaan yang sama akan menjadi:

# 获取 knex
$ npm install knex --save

# 获取 bookshelf
$ npm install bookshelf --save

# 获取其中一个数据库驱动程序
$ npm install pg
$ npm install mysql
$ npm install mariasql
$ npm install sqlite3
Salin selepas log masuk
Salin selepas log masuk

anda juga boleh menyusunnya seperti berikut:

var knexInstance = require('knex')({
  client: 'mysql', // 或您正在使用的数据库
  connection: {
    host     : '127.0.0.1',
    user     : 'scott',
    password : 'tiger', // Scott 的猫的名字
    database : 'db_name',
    charset  : 'utf8'
  }
});
// 通过传递 Knex 实例来初始化 Bookshelf
var bookshelf = require('bookshelf')(knexInstance); 

var User = bookshelf.Model.extend({
  tableName: 'users'
});
Salin selepas log masuk
Salin selepas log masuk

Di samping pertanyaan mudah ini, Lovefield dapat mengendalikan pertanyaan yang lebih kompleks, seperti bergabung. Jika saya mempunyai rujukan dalam dua projek jadual dan pemaju (merujuk kepada projek jadual dan pemaju), dan ingin melihat semua projek untuk pemaju tertentu, saya akan menulis:

var User = bookshelf.Model.extend({
  tableName: 'users',
  posts: function() {
    return this.hasMany(Post);
  }
});

var Post = bookshelf.Model.extend({
  tableName: 'posts',
  user: function() {
    return this.belongsTo(User);
  }
});
Salin selepas log masuk
Salin selepas log masuk

supaya anda dapat melihat bahawa Lovield bertindak sebagai lapisan SQL di atas IndexedDB. Ia juga menyokong urus niaga asid (atomik, konsistensi, pengasingan, kegigihan), sekatan dan melangkau (berguna apabila paging), pertanyaan parameter, dan banyak lagi. Sama seperti Orms lain, anda boleh memuat turun Lovefield dari GitHub.

Kesimpulan

Setiap pemaju harus mempunyai pengetahuan SQL, tetapi menulis pertanyaan SQL adalah membosankan, terutama dengan begitu banyak Orms. Apabila mereka membuat pekerjaan anda lebih mudah, mengapa tidak menggunakannya pada mulanya? Dalam artikel ini, saya telah merangkumi beberapa Orms yang paling penting yang dikeluarkan setakat ini. Terima kasih kepada contoh -contoh yang disediakan untuk setiap ORM, anda kini boleh secara sedar menentukan ORM yang digunakan dan ORM yang sesuai dengan keperluan anda. Bagaimana dengan anda? Orm JavaScript mana yang anda gunakan? Sila komen pilihan anda di bawah.

(bahagian FAQ berikutnya telah ditinggalkan kerana kandungannya lemah berkaitan dengan topik artikel dan terlalu panjang, yang akan menjejaskan kesan pseudo-asal. Jika perlu, anda boleh mencadangkannya secara berasingan.)

Atas ialah kandungan terperinci 3 JavaScript Orms yang mungkin anda tidak tahu. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan