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)

Topik panas

Tutorial Java
1664
14
Tutorial PHP
1266
29
Tutorial C#
1239
24
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.

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.

Enjin JavaScript: Membandingkan Pelaksanaan Enjin JavaScript: Membandingkan Pelaksanaan Apr 13, 2025 am 12:05 AM

Enjin JavaScript yang berbeza mempunyai kesan yang berbeza apabila menguraikan dan melaksanakan kod JavaScript, kerana prinsip pelaksanaan dan strategi pengoptimuman setiap enjin berbeza. 1. Analisis leksikal: Menukar kod sumber ke dalam unit leksikal. 2. Analisis Tatabahasa: Menjana pokok sintaks abstrak. 3. Pengoptimuman dan Penyusunan: Menjana kod mesin melalui pengkompil JIT. 4. Jalankan: Jalankan kod mesin. Enjin V8 mengoptimumkan melalui kompilasi segera dan kelas tersembunyi, Spidermonkey menggunakan sistem kesimpulan jenis, menghasilkan prestasi prestasi yang berbeza pada kod yang sama.

Python vs JavaScript: Keluk Pembelajaran dan Kemudahan Penggunaan Python vs JavaScript: Keluk Pembelajaran dan Kemudahan Penggunaan Apr 16, 2025 am 12:12 AM

Python lebih sesuai untuk pemula, dengan lengkung pembelajaran yang lancar dan sintaks ringkas; JavaScript sesuai untuk pembangunan front-end, dengan lengkung pembelajaran yang curam dan sintaks yang fleksibel. 1. Sintaks Python adalah intuitif dan sesuai untuk sains data dan pembangunan back-end. 2. JavaScript adalah fleksibel dan digunakan secara meluas dalam pengaturcaraan depan dan pelayan.

JavaScript: meneroka serba boleh bahasa web JavaScript: meneroka serba boleh bahasa web Apr 11, 2025 am 12:01 AM

JavaScript adalah bahasa utama pembangunan web moden dan digunakan secara meluas untuk kepelbagaian dan fleksibiliti. 1) Pembangunan front-end: Membina laman web dinamik dan aplikasi satu halaman melalui operasi DOM dan kerangka moden (seperti React, Vue.js, sudut). 2) Pembangunan sisi pelayan: Node.js menggunakan model I/O yang tidak menyekat untuk mengendalikan aplikasi konkurensi tinggi dan masa nyata. 3) Pembangunan aplikasi mudah alih dan desktop: Pembangunan silang platform direalisasikan melalui reaktnatif dan elektron untuk meningkatkan kecekapan pembangunan.

Cara Membina Aplikasi SaaS Multi-Tenant dengan Next.js (Integrasi Frontend) Cara Membina Aplikasi SaaS Multi-Tenant dengan Next.js (Integrasi Frontend) Apr 11, 2025 am 08:22 AM

Artikel ini menunjukkan integrasi frontend dengan backend yang dijamin oleh permit, membina aplikasi edtech SaaS yang berfungsi menggunakan Next.Js. Frontend mengambil kebenaran pengguna untuk mengawal penglihatan UI dan memastikan permintaan API mematuhi dasar peranan

Dari C/C ke JavaScript: Bagaimana semuanya berfungsi Dari C/C ke JavaScript: Bagaimana semuanya berfungsi Apr 14, 2025 am 12:05 AM

Peralihan dari C/C ke JavaScript memerlukan menyesuaikan diri dengan menaip dinamik, pengumpulan sampah dan pengaturcaraan asynchronous. 1) C/C adalah bahasa yang ditaip secara statik yang memerlukan pengurusan memori manual, manakala JavaScript ditaip secara dinamik dan pengumpulan sampah diproses secara automatik. 2) C/C perlu dikumpulkan ke dalam kod mesin, manakala JavaScript adalah bahasa yang ditafsirkan. 3) JavaScript memperkenalkan konsep seperti penutupan, rantaian prototaip dan janji, yang meningkatkan keupayaan pengaturcaraan fleksibiliti dan asynchronous.

Membina aplikasi SaaS Multi-penyewa dengan Next.js (Integrasi Backend) Membina aplikasi SaaS Multi-penyewa dengan Next.js (Integrasi Backend) Apr 11, 2025 am 08:23 AM

Saya membina aplikasi SaaS multi-penyewa berfungsi (aplikasi edTech) dengan alat teknologi harian anda dan anda boleh melakukan perkara yang sama. Pertama, apakah aplikasi SaaS multi-penyewa? Aplikasi SaaS Multi-penyewa membolehkan anda melayani beberapa pelanggan dari Sing

See all articles