> 웹 프론트엔드 > JS 튜토리얼 > 3 JavaScript orm 당신은 모르는 것입니다

3 JavaScript orm 당신은 모르는 것입니다

Lisa Kudrow
풀어 주다: 2025-02-19 08:56:17
원래의
756명이 탐색했습니다.

3 JavaScript ORMs You Might Not Know

코어 포인트

이 기사는 응용 프로그램에서 복잡한 데이터를 관리하는 데 사용할 수있는 3 개의 JavaScript orms를 소개합니다 : Bookshelf.js, sequelize 및 Lovefield. Bookshelf.js 및 Sequelize는 Node.js 용으로 설계되었으며 PostgreSQL, MySQL, Mariadb, SQLite3 및 MSSQL과 잘 작동합니다. Lovefield는 Google에서 개발 한 IndexedDB를 구축 한 웹 응용 프로그램 관계형 데이터베이스입니다.

<.> Bookshelf.js 및 sequelize를 사용하면 개발자가 테이블 사이의 일대일, 일대일 및 다수의 관계를 만들 수 있습니다. 또한 거래, 관계, 읽기 및 복제를 지원합니다. Lovefield는 원시 SQL 쿼리를 지원하지 않지만 SQL 구문을 모방하고 산 트랜잭션, 제한 및 건너 뛰기, 매개 변수화 쿼리 등을 지원합니다.
    SQL 지식은 개발자에게 중요하지만 JavaScript ORM은 복잡한 데이터 및 데이터베이스 상호 작용을 처리하여 작업을 단순화 할 수 있습니다. ORM의 선택은 프로젝트의 특정 요구 사항, 데이터베이스의 복잡성 및 필요한 기능을 기반으로해야합니다.
  • JavaScript에는 단순한 브라우저 스크립트와 대화식 웹 사이트 이상의 것이 있습니다. 거의 모든 곳에서 사용할 수 있습니다 :
  • 브라우저 측 : ECMAScript 및 DOM API로 제한 될 필요가 없습니다. 커피 스크립트와 다트는 순수한 자바 스크립트 언어로 컴파일하여 코드를 더 빠르고 더 잘 작성하는 데 도움이됩니다.
  • 서버 측 : Node.js의 수와 많은 프레임 워크가 증가하여 프론트 엔드 개발자가 풀 스택 개발자가되도록 도와줍니다.
  • 모바일 앱 : Cordova 및 Ionic 또는 NativeScript와 같은 프레임 워크를 사용하면 Java 또는 Swift/Objective-C와 같은 다른 언어를 배우지 않고도 모바일 응용 프로그램을 더 빨리 구축 할 수 있습니다. 이러한 프레임 워크를 사용하면 모바일 플랫폼간에 소스 코드를 공유 할 수도 있습니다.
IoT : SitePoint는 Patrick Catanzariti의 일부 기사를 게시했습니다. 이와 관련하여 매우 도움이됩니다.

개발 애플리케이션의 복잡성이 증가함에 따라 데이터베이스 서버 (예 : PostgreSQL), 모바일 장치 용 SQLITE 또는 브라우저. 이것이 ORM이하는 일입니다. Java 커뮤니티에는 최대 절전 모드가 있으며 PHP 개발자는 교리 ORM을 사용할 수 있으며 JavaScript 커뮤니티에는 자체 ORM도 있습니다. 이 기사에서는 다음 애플리케이션에서 복잡한 데이터를 처리하는 데 도움이되는 JavaScript orms를 다룰 것입니다.
  • Bookshelf.js
  • <.> Bookshelf.js는 postgresql, mysql, mariadb 및 sqlite3과 잘 작동하도록 설계된 node.js orm입니다. Knex SQL 쿼리 빌더를 기반으로하며 모델 및 컬렉션 및 유사한 이름 지정 규칙과 같은 Backbone.js의 일부 패턴을 따릅니다. 백본을 사용한 적이 있다면 매우 빨리 책장에 익숙해 질 수 있습니다. BookShelf를 설치하려면 Knex 및 데이터베이스 드라이버를 설치해야합니다.
    # 获取 knex
    $ npm install knex --save
    
    # 获取 bookshelf
    $ npm install bookshelf --save
    
    # 获取其中一个数据库驱动程序
    $ npm install pg
    $ npm install mysql
    $ npm install mariasql
    $ npm install sqlite3
    로그인 후 복사
    로그인 후 복사
    설치가 완료된 후 (-save 플래그를 전달하여 package.json 파일에 추가되도록) : <🎜 🎜> node.js 응용 프로그램에서 사용할 수 있습니다.

    보시다시피, Knex 인스턴스를 매개 변수로 전달하여 책장 객체를 만듭니다. 그런 다음 Model의 Extend () 메소드를 사용하여 위의 예제의 사용자 테이블에 사용되는 사용자 모델과 마찬가지로 응용 프로그램에서 모델을 생성 할 수 있습니다. 책장은 응용 프로그램 전반에 걸쳐 사용해야하는 유일한 책장 인스턴스임을 기억하십시오. 따라서 싱글 톤에 래핑하거나 다른 파일에 넣고 필요한 경우 소개하는 등 애플리케이션의 어느 곳에서나 사용할 수 있도록하는 것이 좋습니다. BookShelf를 사용하면 일대일, 일대일 및 다수의 관계를 가질 수 있습니다. 우리의 경우, 그것은 다음과 비슷합니다

    확인하려면 github에서 책장을 찾을 수 있습니다.
    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'
    });
    로그인 후 복사
    로그인 후 복사

    <<> 속도 <🎜 🎜> <🎜 🎜> 속도는 node.js와 io.js의 또 다른 ORM입니다 (결국 합쳐지게됩니다). PostgreSQL, MySQL, MariaDB, Sqlite 및 MSSQL을 지원하며 강력한 트랜잭션 지원, 관계, 읽기 및 복제 기능이 있습니다. 다음 명령을 실행하여 설치할 수 있습니다.

    이제 다음 예에서 볼 수 있듯이 사용할 수 있습니다.
    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);
      }
    });
    로그인 후 복사
    로그인 후 복사

    Bookshelf.js와 마찬가지로 데이터베이스 연결 만 있으면됩니다. 그런 다음 모델을 만들 수 있습니다.

    후속체. 다른 데이터 유형은 integer의 sequelize.integer입니다. 여기에서 전체 목록을 읽을 수 있습니다. 속편을 사용하면 테이블 간의 관계를 쓸 수 있습니다. 예를 들어, Project라는 모델과 Developer라는 다른 모델이 있고 여러 개발자가 프로젝트에 할당하려면 다음을 수행 할 수 있습니다.

    이렇게하면 필요한 필드가 각 모델에 추가되도록합니다 (이 경우 개발자 모델에서 Project_id). 또는 속편 API의 혜택을받을 수 없다고 생각되면 원시 SQL 쿼리를 실행할 수 있습니다. 속편은 Github에서도 제공됩니다. <<> Lovefield

    러브 필드는 진짜 orm이 아닙니다. 실제로 Google에서 개발하고 전적으로 JavaScript로 작성된 IndexedDB를 구축 한 웹 애플리케이션을위한 관계형 데이터베이스입니다. 원시 SQL 쿼리를 지원하지는 않지만 SQL 구문을 모방하려는 API가 제공됩니다. bower : <🎜 🎜>를 사용하여 설치할 수 있습니다

    또는 npm :
    # 安装 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
    로그인 후 복사

    html 파일에 추가 한 후 프론트 엔드 관계형 데이터베이스로 사용할 수 있습니다. 데이터베이스와 테이블을 만드는 것은 간단합니다 : <🎜 🎜>

    이 코드 스 니펫은 TODO_DB라는 데이터베이스와 항목이라는 테이블을 만드는 방법과 주어진 열 (ID 기본 키, 작업, 마감일 및 완료)을 작성하는 방법을 보여줍니다. 이 시점에서 모든 미완성 된 작업의 목록을 얻으려면 코드는 다음과 같습니다.
    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');
    로그인 후 복사
    위의 코드는 SQL과 매우 유사하며 동일한 쿼리는 다음과 같습니다.
    # 获取 knex
    $ npm install knex --save
    
    # 获取 bookshelf
    $ npm install bookshelf --save
    
    # 获取其中一个数据库驱动程序
    $ npm install pg
    $ npm install mysql
    $ npm install mariasql
    $ npm install sqlite3
    로그인 후 복사
    로그인 후 복사
    다음과 같이 정렬 할 수도 있습니다

    이 간단한 쿼리 외에도 Lovefield는 조인과 같은 더 복잡한 쿼리를 처리 할 수 ​​있습니다. 두 개의 테이블 프로젝트와 개발자 (각각 테이블 프로젝트 및 개발자를 참조)에 참조하고 주어진 개발자의 모든 프로젝트를보고 싶다면 다음과 같이 쓸 것입니다.

    따라서 러브 필드가 indexeddb 위의 SQL 층 역할을한다는 것을 알 수 있습니다. 또한 산 트랜잭션 (원자력, 일관성, 격리, 지속성), 제한 및 건너 뛰기 (페이징시 유용), 매개 변수화 쿼리 등을 지원합니다. 다른 Orms와 마찬가지로 Github에서 Lovefield를 다운로드 할 수 있습니다.
    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'
    });
    로그인 후 복사
    로그인 후 복사
    <🎜 🎜> <<> 결론

    모든 개발자는 SQL 지식을 가져야하지만 SQL 쿼리를 작성하는 것은 특히 많은 ORM에서 지루합니다. 그들이 당신의 직업을 더 쉽게 만들 때, 왜 처음에 그것들을 사용하지 않습니까? 이 기사에서는 지금까지 발표 된 가장 중요한 ORM을 다루었습니다. 각 ORM에 제공된 예제 덕분에 이제 사용 할 ORM과 귀하의 요구에 맞는 ORM을 의식적으로 결정할 수 있어야합니다. 당신은 어때요? 어떤 JavaScript ORM을 사용하십니까? 아래 선택에 대해 의견을 제시하십시오.
    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);
      }
    });
    로그인 후 복사
    로그인 후 복사

    (후속 FAQ 섹션은 내용이 기사의 주제와 약하게 관련되어 있고 너무 길어서 의사 원리 효과에 영향을 미치기 때문에 생략되었습니다. 필요한 경우 별도로 제안 할 수 있습니다.)

위 내용은 3 JavaScript orm 당신은 모르는 것입니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿