V8 Çalışma Zamanına Genel Bakış

Apps Komut Dosyası ve JavaScript'te, bir çalışma zamanı veya çalışma zamanı ortamı şunları içerir: komut dosyası kodunu ayrıştıran ve yürüten JavaScript motoru. Çalışma zamanı, nasıl erişileceğine, programın bellekle nasıl etkileşime girebileceğine ve program söz diziminin yasal olduğunu gösterir. Her bir web tarayıcının JavaScript için çalışma zamanı ortamına sahip olduğundan emin olun.

Apps Komut Dosyası geçmişte Mozilla'nın Rhino JavaScript'i ve kullanabilirsiniz. Rhino ise Apps Komut Dosyası'nın yürütülmesi için çalıştırdıktan sonra, aynı zamanda Apps Komut Dosyası'nı belirli bir JavaScript sürümüne (ES5). Apps Komut Dosyası geliştiricileri Rhino kullanılarak komut dosyalarında daha modern JavaScript söz dizimi ve özellikleri kullanılamaz belirler.

Bu sorunu çözmek için Apps Komut Dosyası artık Chrome ve Node.js'yi destekleyen V8 çalışma zamanı. Şunları yapabilirsiniz: mevcut komut dosyalarını V8'e taşıma .

Bu sayfada, V8 tarafından etkinleştirilen yeni özellikler ve V8'i nasıl etkinleştirebileceğiniz açıklanmaktadır. komut dosyalarınızda kullanmak üzere. Komut dosyalarını V8'e taşıma mevcut komut dosyalarını V8 çalışma zamanını kullanacak şekilde taşıma adımlarını açıklar.

V8 çalışma zamanının özellikleri

V8 çalışma zamanını kullanan komut dosyaları aşağıdakilerden yararlanabilir özellikler:

Modern ECMAScript söz dizimi

Modern ECMAScript'i kullanabilirsiniz V8 çalışma zamanı tarafından desteklenen komut dosyalarındaki söz dizimini kullanmalıdır. Bu söz dizimi şunları içerir: let, const ve diğer birçok popüler özellik.

Popülerliğin kısa bir listesi için V8 söz dizimi örneklerine bakın söz dizimi iyileştirmelerinden bahsedeceğiz.

İyileştirilmiş işlev algılama

V8 kullanan komut dosyaları için Apps Komut Dosyası işlevi algılama iyileştirildi. Yeni çalışma zamanı şu işlev tanımı biçimlerini tanır:

      function normalFunction() {}
      async function asyncFunction() {}
      function* generatorFunction() {}

      var varFunction = function() {}
      let letFunction = function() {}
      const constFunction = function() {}

      var namedVarFunction = function alternateNameVarFunction() {}
      let namedLetFunction = function alternateNameLetFunction() {}
      const namedConstFunction = function alternateNameConstFunction() {}

      var varAsyncFunction = async function() {}
      let letAsyncFunction = async function() {}
      const constAsyncFunction = async function() {}

      var namedVarAsyncFunction = async function alternateNameVarAsyncFunction() {}
      let namedLetAsyncFunction = async function alternateNameLetAsyncFunction() {}
      const namedConstAsyncFunction = async function alternateNameConstAsyncFunction() {}

      var varGeneratorFunction = function*() {}
      let letGeneratorFunction = function*() {}
      const constGeneratorFunction = function*() {}

      var namedVarGeneratorFunction = function* alternateNameVarGeneratorFunction() {}
      let namedLetGeneratorFunction = function* alternateNameLetGeneratorFunction() {}
      const namedConstGeneratorFunction = function* alternateNameConstGeneratorFunction() {}

      var varLambda = () => {}
      let letLambda = () => {}
      const constLambda = () => {}

      var varAsyncLambda = async () => {}
      let letAsyncLambda = async () => {}
      const constAsyncLambda = async () => {}

Tetikleyicilerden ve geri çağırmalardan nesne yöntemlerini çağırma

V8 kullanan komut dosyaları, yerlerden nesne yöntemlerini ve sınıf statik yöntemlerini çağırabilir burada zaten kitaplık yöntemlerini çağırabilirsiniz. Bu yerler arasında şunlar bulunur: takip etmek için:

Aşağıdaki V8 örneği, URL'yi oluştururken nesne yöntemlerinin Google E-Tablolar'daki menü öğeleri:

function onOpen() {
  var ui = SpreadsheetApp.getUi(); // Or DocumentApp, SlidesApp, or FormApp.
  ui.createMenu('Custom Menu')
      .addItem('First item', 'menu.item1')
      .addSeparator()
      .addSubMenu(ui.createMenu('Sub-menu')
          .addItem('Second item', 'menu.item2'))
      .addToUi();
}

var menu = {
  item1: function() {
    SpreadsheetApp.getUi().alert('You clicked: First item');
  },
  item2: function() {
    SpreadsheetApp.getUi().alert('You clicked: Second item');
  }
}

Günlükleri göster

Apps Komut Dosyası iki günlük kaydı hizmeti sağlar: Logger hizmeti ve console sınıf. Bu hizmetlerin her ikisi de günlükleri aynı dosyaya yaz Stackdriver Logging hizmeti.

Logger ve console günlüklerini göstermek için komut dosyası düzenleyicisinin üst kısmındaki Yürütme günlüğü.

Yürütmeleri göster

Komut dosyanızın yürütme geçmişini görüntülemek için Apps Komut Dosyası projesini açın ve sol tarafta, Yürütmeler'i tıklayın.

V8 söz dizimi örnekleri

Aşağıda, Google Analytics 4'te erişebileceğiniz popüler söz dizimsel özelliklerin komut dosyalarını çalıştırmanız gerekir.

let ve const

let ve const anahtar kelimeler, blok kapsamı yerel değişkenlerini ve blok kapsamı tanımlamanıza olanak tanır sabit değerleri gösterir.

// V8 runtime
let s = "hello";
if (s === "hello") {
  let s = "world";
  console.log(s);  // Prints "world"
}
console.log(s);  // Prints "hello"

const N = 100;
N = 5; // Results in TypeError
      

Ok işlevleri

Ok işlevleri ifadelerin içindeki işlevleri tanımlamanın kompakt bir yolunu sunar.

// Rhino runtime
function square(x) {
  return x * x;
}

console.log(square(5));  // Outputs 25
      
// V8 runtime
const square = x => x * x;
console.log(square(5));  // Outputs 25

// Outputs [1, 4, 9]
console.log([1, 2, 3].map(x => x * x));
      

Sınıflar

Sınıflar kalıtım yoluyla kodu kavramsal olarak düzenlemek için bir araç sağlar. V8'deki Sınıflar JavaScript prototipine dayalı kalıtıma göre öncelikli olarak söz dizimseldir.

// V8 runtime
class Rectangle {
  constructor(width, height) { // class constructor
    this.width = width;
    this.height = height;
  }

  logToConsole() { // class method
    console.log(`Rectangle(width=${this.width}, height=${this.height})`);
  }
}

const r = new Rectangle(10, 20);
r.logToConsole();  // Outputs Rectangle(width=10, height=20)
      

Atamaları kaldırma

Ödevi kaldırma ifadeler, dizi ve nesnelerdeki değerleri açıp açmanın kullanabilirsiniz.

// Rhino runtime
var data = {a: 12, b: false, c: 'blue'};
var a = data.a;
var c = data.c;
console.log(a, c);  // Outputs 12 "blue"

var array = [1, 2, 3];
var x = a[0];
var y = a[1];
var z = a[2];
console.log(x, y, z);  // Outputs 1 2 3
      
// V8 runtime
var data = {a: 12, b: false, c: 'blue'};
var {a, c} = data;
console.log(a, c);  // Outputs 12 "blue"


var array = [1, 2, 3];
var [x, y, z] = array;
console.log(x, y, z);  // Outputs 1 2 3


      

Şablon değişmez değerleri

Şablon değişmez değerleri yerleştirilmiş ifadelere izin veren dize değişmez değerleridir. Önünüzdeki projelerde dize birleştirme ifadeleri kullanın.

// Rhino runtime
var name =
  'Hi ' + first + ' ' + last + '.';
var url =
  'http://localhost:3000/api/messages/'
  + id;
      
// V8 runtime
var name = `Hi ${first} ${last}.`;
var url =
  `http://localhost:3000/api/messages/${id}`;


      

Varsayılan parametreler

Varsayılan parametreler fonksiyondaki işlev parametreleri için varsayılan değerler belirtebilmenizi sağlar. beyanı. Bu, fonksiyon gövdesindeki kodu basitleştirebilir çünkü eksik parametrelere varsayılan değerleri açıkça atamanız gerekiyor.

// Rhino runtime
function hello(greeting, name) {
    greeting = greeting || "hello";
    name = name || "world";
    console.log(
        greeting + " " + name + "!");
}

hello();  // Outputs "hello world!"
      
// V8 runtime
var hello =
  function(greeting="hello", name="world") {
      console.log(
        greeting + " " + name + "!");
  }

hello();  // Outputs "hello world!"

      

Çok satırlı dizeler

Anahtar kelimelerin çok satırlı dizeler sabit şablon değerleriyle aynı söz dizimini kullanın. Olduğu gibi bu söz dizimi, dizelerin birbirine bağlanmasını önlemenizi ve dizelerin birbirine bağlanmasını dize tanımları.

// Rhino runtime
var multiline = "This string is sort of\n"
+ "like a multi-line string,\n"
+ "but it's not really one.";
      
// V8 runtime
var multiline = `This on the other hand,
actually is a multi-line string,
thanks to JavaScript ES6`;
      

V8 çalışma zamanını etkinleştirme

Bir komut dosyası Rhino çalışma zamanını kullanıyorsa bunu yapmak için komut dosyasını V8'e şunları yapabilirsiniz:

  1. Apps Komut Dosyası projesini açın.
  2. Solda Proje Ayarları'nı tıklayın.
  3. Chrome V8 çalışma zamanını etkinleştir onay kutusunu seçin.

Alternatif olarak, komut dosyası çalışma zamanını doğrudan komut dosyası manifestini düzenleme dosya:

  1. Apps Komut Dosyası projesini açın.
  2. Solda Proje Ayarları'nı tıklayın.
  3. Show "appsscript.json" dosyasını seçin. manifest dosyası düzenleyicide onay kutusunu işaretleyin.
  4. Sol tarafta Düzenleyici'yi tıklayın > appsscript.json
  5. appsscript.json manifest dosyasında runtimeVersion alanına V8 değerini ekleyin.
  6. En üstte, Projeyi kaydet'i tıklayın.

Komut dosyalarını V8'e taşıma açıklaması komut dosyanızın V8 kullanarak iyi bir şekilde çalıştığından emin olmak için atmanız gereken diğer adımlar hakkında bilgi vermek istiyorum.

Rhino çalışma zamanını etkinleştirme

Komut dosyanız V8 kullanıyorsa ve orijinal dosyayı kullanmak için değiştirmeniz gerekiyorsa Rhino çalışırken aşağıdaki adımları uygulayın:

  1. Apps Komut Dosyası projesini açın.
  2. Solda Proje Ayarları'nı tıklayın.
  3. Chrome V8 çalışma zamanını etkinleştir onay kutusunun işaretini kaldırın.

Alternatif olarak, komut dosyası manifestinizi düzenleyin:

  1. Apps Komut Dosyası projesini açın.
  2. Solda Proje Ayarları'nı tıklayın.
  3. Show "appsscript.json" dosyasını seçin. manifest dosyası düzenleyicide onay kutusunu işaretleyin.
  4. Sol tarafta Düzenleyici'yi tıklayın > appsscript.json
  5. appsscript.json manifest dosyasında runtimeVersion alanına DEPRECATED_ES5 değerini ekleyin.
  6. En üstte, Projeyi kaydet'i tıklayın.

Mevcut komut dosyalarını nasıl taşıyabilirim?

Komut dosyalarını V8'e taşıma kılavuzunda mevcut bir komut dosyasını V8 kullanın. Bu işlem, V8 çalışma zamanını etkinleştirmeyi ve komut dosyasını kontrol ederek uyumsuzlukları gidermeye çalışın.

Komut dosyalarını V8'e otomatik taşıma

18 Şubat 2020'den itibaren Google, mevcut öğeleri kademeli olarak taşımaya başlayacak geçen komut dosyalarını V8'e göndermektir. Etkilenen komut dosyaları taşıma işleminden sonra normal şekilde çalışmaya devam eder.

Bir komut dosyasını otomatik taşımanın kapsamı dışında bırakmak istiyorsanız runtimeVersion alanını DEPRECATED_ES5 olarak ayarlayın. Dilerseniz komut dosyasını V8'e taşıyabilirsiniz daha fazla bilgi edineceksiniz.

Hataları nasıl bildirebilirim?

Destek kılavuzunda, programlamanın nasıl alınacağı açıklanmaktadır. Stack Overflow konusunda yardım, mevcut sorun raporlarında arama yapabilir, yeni hataları bildirebilir ve yeni özellik isteğinde bulunabilirsiniz.