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

3 JavaScript Orms yang mungkin anda tidak tahu

Feb 19, 2025 am 08:56 AM

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apa yang perlu saya lakukan jika saya menghadapi percetakan kod yang dihiasi untuk resit kertas terma depan? Apa yang perlu saya lakukan jika saya menghadapi percetakan kod yang dihiasi untuk resit kertas terma depan? Apr 04, 2025 pm 02:42 PM

Soalan dan penyelesaian yang sering ditanya untuk percetakan tiket kertas terma depan dalam pembangunan front-end, percetakan tiket adalah keperluan umum. Walau bagaimanapun, banyak pemaju sedang melaksanakan ...

Demystifying JavaScript: Apa yang berlaku dan mengapa penting Demystifying JavaScript: Apa yang berlaku dan mengapa penting Apr 09, 2025 am 12:07 AM

JavaScript adalah asas kepada pembangunan web moden, dan fungsi utamanya termasuk pengaturcaraan yang didorong oleh peristiwa, penjanaan kandungan dinamik dan pengaturcaraan tak segerak. 1) Pengaturcaraan yang didorong oleh peristiwa membolehkan laman web berubah secara dinamik mengikut operasi pengguna. 2) Penjanaan kandungan dinamik membolehkan kandungan halaman diselaraskan mengikut syarat. 3) Pengaturcaraan Asynchronous memastikan bahawa antara muka pengguna tidak disekat. JavaScript digunakan secara meluas dalam interaksi web, aplikasi satu halaman dan pembangunan sisi pelayan, sangat meningkatkan fleksibiliti pengalaman pengguna dan pembangunan silang platform.

Siapa yang dibayar lebih banyak Python atau JavaScript? Siapa yang dibayar lebih banyak Python atau JavaScript? Apr 04, 2025 am 12:09 AM

Tidak ada gaji mutlak untuk pemaju Python dan JavaScript, bergantung kepada kemahiran dan keperluan industri. 1. Python boleh dibayar lebih banyak dalam sains data dan pembelajaran mesin. 2. JavaScript mempunyai permintaan yang besar dalam perkembangan depan dan stack penuh, dan gajinya juga cukup besar. 3. Faktor mempengaruhi termasuk pengalaman, lokasi geografi, saiz syarikat dan kemahiran khusus.

Bagaimana untuk mencapai kesan menatal paralaks dan kesan animasi elemen, seperti laman web rasmi Shiseido?
atau:
Bagaimanakah kita dapat mencapai kesan animasi yang disertai dengan menatal halaman seperti laman web rasmi Shiseido? Bagaimana untuk mencapai kesan menatal paralaks dan kesan animasi elemen, seperti laman web rasmi Shiseido? atau: Bagaimanakah kita dapat mencapai kesan animasi yang disertai dengan menatal halaman seperti laman web rasmi Shiseido? Apr 04, 2025 pm 05:36 PM

Perbincangan mengenai realisasi kesan animasi tatal dan elemen Parallax dalam artikel ini akan meneroka bagaimana untuk mencapai yang serupa dengan laman web rasmi Shiseido (https://www.shiseido.co.jp/sb/wonderland/) ... ...

Evolusi JavaScript: Trend Semasa dan Prospek Masa Depan Evolusi JavaScript: Trend Semasa dan Prospek Masa Depan Apr 10, 2025 am 09:33 AM

Trend terkini dalam JavaScript termasuk kebangkitan TypeScript, populariti kerangka dan perpustakaan moden, dan penerapan webassembly. Prospek masa depan meliputi sistem jenis yang lebih berkuasa, pembangunan JavaScript, pengembangan kecerdasan buatan dan pembelajaran mesin, dan potensi pengkomputeran IoT dan kelebihan.

Adakah JavaScript sukar belajar? Adakah JavaScript sukar belajar? Apr 03, 2025 am 12:20 AM

Pembelajaran JavaScript tidak sukar, tetapi ia mencabar. 1) Memahami konsep asas seperti pembolehubah, jenis data, fungsi, dan sebagainya. 2) Pengaturcaraan asynchronous tuan dan melaksanakannya melalui gelung acara. 3) Gunakan operasi DOM dan berjanji untuk mengendalikan permintaan tak segerak. 4) Elakkan kesilapan biasa dan gunakan teknik debugging. 5) Mengoptimumkan prestasi dan mengikuti amalan terbaik.

Bagaimana untuk menggabungkan elemen array dengan ID yang sama ke dalam satu objek menggunakan JavaScript? Bagaimana untuk menggabungkan elemen array dengan ID yang sama ke dalam satu objek menggunakan JavaScript? Apr 04, 2025 pm 05:09 PM

Bagaimana cara menggabungkan elemen array dengan ID yang sama ke dalam satu objek dalam JavaScript? Semasa memproses data, kita sering menghadapi keperluan untuk mempunyai id yang sama ...

Operasi Asynchronous Zustand: Bagaimana untuk memastikan keadaan terkini yang diperoleh oleh Usestore? Operasi Asynchronous Zustand: Bagaimana untuk memastikan keadaan terkini yang diperoleh oleh Usestore? Apr 04, 2025 pm 02:09 PM

Masalah kemas kini data dalam operasi Zustand Asynchronous. Apabila menggunakan Perpustakaan Pengurusan Negeri Zustand, anda sering menghadapi masalah kemas kini data yang menyebabkan operasi tak segerak menjadi tidak lama lagi. � ...

See all articles