SORU
28 Mart 2012, ÇARŞAMBA


Bu Javascript "" ne gerek var?

/PostgreSQL veritabanı okuyup Javascript almaya çalışıyorum. Github üzerinde bu project buldum. Aşağıdaki örnek kodu düğüm çalıştırmayı başardım.

var pg = require('pg'); //native libpq bindings = `var pg = require('pg').native`
var conString = "tcp://postgres:1234@localhost/postgres";

var client = new pg.Client(conString);
client.connect();

//queries are queued and executed one after another once the connection becomes available
client.query("CREATE TEMP TABLE beatles(name varchar(10), height integer, birthday timestamptz)");
client.query("INSERT INTO beatles(name, height, birthday) values($1, $2, $3)", ['Ringo', 67, new Date(1945, 11, 2)]);
client.query("INSERT INTO beatles(name, height, birthday) values($1, $2, $3)", ['John', 68, new Date(1944, 10, 13)]);

//queries can be executed either via text/parameter values passed as individual arguments
//or by passing an options object containing text, (optional) parameter values, and (optional) query name
client.query({
  name: 'insert beatle',
  text: "INSERT INTO beatles(name, height, birthday) values($1, $2, $3)",
  values: ['George', 70, new Date(1946, 02, 14)]
});

//subsequent queries with the same name will be executed without re-parsing the query plan by postgres
client.query({
  name: 'insert beatle',
  values: ['Paul', 63, new Date(1945, 04, 03)]
});
var query = client.query("SELECT * FROM beatles WHERE name = $1", ['John']);

//can stream row results back 1 at a time
query.on('row', function(row) {
  console.log(row);
  console.log("Beatle name: %s", row.name); //Beatle name: John
  console.log("Beatle birth year: %d", row.birthday.getYear()); //dates are returned as javascript dates
  console.log("Beatle height: %d' %d\"", Math.floor(row.height/12), row.height); //integers are returned as javascript ints
});

//fired after last row is emitted
query.on('end', function() { 
  client.end();
});

Bir web sayfası üzerinde çalıştırmak için çalıştı, ama hiçbir şey olmadı. Javascript konsolu ve sadece "tanımlı değil gerektirir." diyor kontrol ettim

Bu "gerektirir?" neyin nesi Neden bir web sitesi içinde düğüm çalışmıyor?

Bu iş için düğüm var daha önce de npm install pg yapmak zorunda kaldım. Bu ne hakkında? Dizine baktım ve dosya pg bulamadı. Bir yere gittik ve Javascript nasıl buluyor?

CEVAP
28 Mart 2012, ÇARŞAMBA


require() standart JavaScript parçası değil. Soru ve etiketler, require() bağlamında yüklemek için Node.js yerleşikmodüller. Konsept/Java/Python/[Ekle daha fazla dil burada] ithalat ya da içerir C benzer.

Modül kavramı sadece <script> etiketleri ile JavaScript kodu küçük bit eklemeye benzer. <script> etiketi ekleme aksine, küresel kapsamı içine dosya akıtmıyor. Dosya işlevselliği göstermek için düşünmüyorsanız, kendi kapsam, aslında her şey o dosyada tanımlamak yakalama. require bir değeri, modül exports module.exports kullanarak gösterir ne bağlı olarak döner. Another post require() exports ile birlikte nasıl çalıştığını açıklar.

Kodunuzda, yükler sanırım pg Bu modül, NodeJS için PostgreSQL sürücüsü. npm install pg yaptığın kısım etmesinin önünü (NodeJS modülleri için paket deposu) pg modül indirme ve require('pg');) projeniz için kullanılabilir hale getirir.


Her ihtimale karşı neden bahsettim merak "bağlam", 3 taraf da bir işlevi kullanan kütüphaneler require bir şey yapmak için adlandırılmış. soru için Kullanışlı olan belirlemek için.

  • RequireJS sağlanan kodu çalıştırmadan önce bağımlılıkları yüklemek için bir fonksiyon require, define ile birlikte " ortaya koyar. Sözdizimi AMD biçimidir.

  • Js dosyaları birleştirir Neuter da bir fonksiyon require adında sunar. Bu çok daha yakın import. PHP gibi davranır.

  • Browserify tarayıcı require, tarayıcı komut NodeJS tarzı (CommonJS modülü sözdizimi) yazılı izin kullanır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • curioustravelers

    curioustrave

    12 AĞUSTOS 2006
  • Justin Davis

    Justin Davis

    14 Ocak 2008
  • Mark Halberstadt

    Mark Halbers

    19 ŞUBAT 2010