Rumah hujung hadapan web tutorial js Gunakan CoffeeScrip untuk menulis kod javascript dengan cara yang cantik_petua javascript

Gunakan CoffeeScrip untuk menulis kod javascript dengan cara yang cantik_petua javascript

May 16, 2016 pm 03:34 PM

JavaScript sudah pasti salah satu ciptaan terhebat di web Hampir semua kesan dinamik pada halaman web adalah berdasarkan kuasa pengkomputeran yang kaya. Dan keupayaannya menjadi lebih dan lebih berkuasa di bawah pelbagai enjin JavaScript baharu, seperti Enjin V8 yang digunakan oleh Google Chrome.

Walau bagaimanapun, kerana ia dilahirkan terlalu awal, banyak definisi tatabahasa yang agak tidak cekap hari ini Beberapa bentuk tatabahasa yang lebih maju tidak boleh ditambahkan pada bahasa JavaScript semasa kerana sebab sejarah, yang boleh dikatakan sayang.

Ramai jenius di seluruh dunia bekerja keras untuk membina JavaScript yang lebih baik. Terdapat banyak percubaan, yang paling menjanjikan ialah CoffeeScript dan TypeScript. Menghadapi CoffeeScript, saya berasa seperti kawan lama pada pandangan pertama juga membangkitkan minat saya yang besar. CoffeeScript, seperti TypeScript, ialah bahasa yang disusun ke dalam JavaScript, dan kedua-duanya meningkatkan keupayaan ekspresif JavaScript. Artikel ini adalah mengenai CoffeeScript, TypeScript akan dibincangkan dalam artikel seterusnya.

Apa yang dipanggil kompilasi kepada JavaScript bermakna CoffeeScript dan TypeScript tidak melaksanakan masa jalan mereka sendiri dikompilasi ke dalam kod JavaScript yang setara dan kemudian dijalankan pada penterjemah JavaScript.

CoffeeScript

Kesederhanaan

Kesan terbesar CoffeeScript ialah ungkapannya yang ringkas. Kod berikut dipetik daripada CoffeeScript Chinese:

# 赋值:
number  = 42
opposite = true
# 条件:
number = -42 if opposite
# 函数:
square = (x) -> x * x
# 数组:
list = [1, 2, 3, 4, 5]
# 对象:
math =
 root:  Math.sqrt
 square: square
 cube:  (x) -> x * square x
# Splats:
race = (winner, runners...) ->
 print winner, runners
# 存在性:
alert "I knew it!" if elvis?
# 数组 推导(comprehensions):
cubes = (math.cube num for num in list)

Salin selepas log masuk

Kod di atas akan dikompilkan kepada kod JavaScript yang setara:

var cubes, list, math, num, number, opposite, race, square,
 __slice = [].slice;
number = 42;
opposite = true;
if (opposite) {
 number = -42;
}
square = function(x) {
 return x * x;
};
list = [1, 2, 3, 4, 5];
math = {
 root: Math.sqrt,
 square: square,
 cube: function(x) {
  return x * square(x);
 }
};
race = function() {
 var runners, winner;
 winner = arguments[0], runners = 2 <= arguments.length &#63; __slice.call(arguments, 1) : [];
 return print(winner, runners);
};
if (typeof elvis !== "undefined" && elvis !== null) {
 alert("I knew it!");
}
cubes = (function() {
 var _i, _len, _results;
 _results = [];
 for (_i = 0, _len = list.length; _i < _len; _i++) {
  num = list[_i];
  _results.push(math.cube(num));
 }
 return _results;
})();
run: cubes
Salin selepas log masuk

CoffeeScript berusaha untuk kesederhanaan. Kesederhanaannya mula-mula ditunjukkan dalam penyingkiran beberapa simbol yang hanya digunakan untuk kawalan sintaks. Ini termasuk:

Batalkan koma bertitik

Batalkan pengisytiharan var

Batalkan pendakap yang mengelilingi kod dalam dan gunakan lekukan sebaliknya

Panggilan fungsi boleh menghilangkan tanda kurung jika tiada kesamaran

Pengisytiharan var melibatkan mekanisme skop pembolehubah JavaScript yang rumit dan tidak berguna. Mari kita tidak bercakap tentang bahagian ini buat masa ini. CoffeeScript memudahkan masalah dengan menghapuskan sepenuhnya mekanisme perisytiharan var. Ringkasnya, dalam dunia CoffeeScript, pembolehubah tidak perlu diisytiharkan terlebih dahulu, hanya menggunakannya secara langsung. Dan pada dasarnya tidak ada bahaya dalam penggunaan ini.

Lekukan dalam CoffeeScript bukan sahaja digunakan untuk mencantikkan kod, tetapi juga mewakili organisasi tahap kod, yang mempunyai makna istimewa. Ringkasnya, kod dalam tidak boleh dikelilingi oleh pendakap, tetapi kod dalam harus diinden. Lekukan yang berbeza mewakili tahap kod yang berbeza. Bentuk dan kandungan adalah konsisten.

Contoh lekukan:

#if缩进
if true
 'true'
else
 'false'
#while缩进
while true
 'true'
#函数缩进
(n) ->
 n * n
#对象字面量缩进
kids =
 brother:
  name: "Max"
  age: 11
 sister:
  name: "Ida"
  age: 9 
Salin selepas log masuk

Panggilan fungsi CoffeeScript boleh menghilangkan kurungan tanpa menyebabkan kekaburan. Contohnya, console.log(objek) boleh dipermudahkan kepada console.log object. Contoh kekaburan yang dipanggil ialah dalam kes tiada parameter, console.log tidak tahu sama ada hendak mengeluarkan log atribut berfungsi atau memanggil log fungsi.

Ekspresi fungsi CoffeeScript juga sangat diperkemas dan diperkemas. Takrif fungsi satu baris boleh kelihatan seperti ini:

square = (x) -> x * x
Salin selepas log masuk

Fungsi berbilang talian juga diatur melalui lekukan. Fungsi kosong adalah yang paling ringkas, seperti ini: ->.

Ungkapan fungsi ringkas ini menjadikan fungsi panggilan balik hantaran sangat mudah. Peta tatasusunan mungkin memadai seperti ini:

list = [1, 2, 3]
list.map (e) -> e+1
Salin selepas log masuk

Kod JavaScript yang setara tidak boleh terlalu ceroboh:

list = [1, 2, 3];
list.map(function(e) { return e + 1; });
Salin selepas log masuk

Ekspresi Dipertingkat

CoffeeScript menyediakan beberapa sintaks ekspresi berkuasa yang tidak dimiliki JavaScript, yang juga dipanggil gula sintaksis. Dalam fikiran saya, terdapat banyak peningkatan seperti itu, saya akan memberikan anda dua contoh yang mewakili:

Interpolasi Rentetan

Penghuraian senarai

Kaedah interpolasi rentetan ialah pengembangan dan penyederhanaan tatabahasa bagi keupayaan rentetan sedia ada manakala penghuraian senarai melibatkan perubahan dalam konsep. Yang pertama adalah peningkatan, yang kedua adalah perubahan.

Interpolasi Rentetan

Dalam rentetan CoffeeScript, anda boleh menggunakan #{…} untuk membenamkan ungkapan. Contohnya:

"#{ 22 / 7 } ialah anggaran yang baik bagi π"

bersamaan dengan:

"" (22 / 7) " ialah anggaran yang baik bagi π";

Interpolasi memainkan peranan pemegang tempat di sini, menjadikannya lebih mudah untuk membina rentetan untuk kandungan dinamik. Saya rasa semua orang boleh menerima ungkapan ini.

Penghuraian senarai

Pemahaman senarai ialah pemain penting dalam dunia CoffeeScript. Ia mengubah cara kitaran itu difikirkan. CoffeeScript tidak menyediakan struktur gelung untuk seperti JavaScript, tetapi semuanya ditukar kepada analisis senarai. JavaScript biasa untuk gelung, seperti ini:

food_list = ['toast', 'cheese', 'wine'];
for (i = 0, len = food_list.length; i < len; i++) {
 food = food_list[i];
 eat(food);
}
Salin selepas log masuk

用CoffeeScript实现就是:

food_list = ['toast', 'cheese', 'wine']
eat food for food in food_list #做个小补充,for循环的单条语句的写法

单单是上面的例子不足以显示列表解析的强大(却看到它的简洁了)。在继续这个话题之前,我觉得我有必要补充一下另一个涉及到CoffeeScript理念的东西了:一切皆是表达式。

在CoffeeScript世界里,一切语句都是表达式语句,都会返回一个值。函数调用默认会返回最后一条语句的值。if条件结构也会返回值,其返回的是执行的最后一条语句的值。循环结构有些不同,其会将每次循环的结果都保存在一个数组里,作为此循环结构的值。例如下面代码的list结果就是[5, 4, 3, 2, 1]。

num = 6
list = while num -= 1
 num
Salin selepas log masuk

回到列表解析的主题。与while一样,for结构也是一种循环的表达,其结果也是一个数组。回到先前的例子,下面的小代码的list结果就是['t', 'c', 'w']。

food_list = ['toast', 'cheese', 'wine']
list = (food[0] for food in food_list)
Salin selepas log masuk

我们已经看到for循环的each形式

eat food for food in food_list
Salin selepas log masuk

以及它的map形式

(food[0] for food in food_list)
Salin selepas log masuk

下面给出它的filter形式

(food for food in food_list when food is 'wine')
Salin selepas log masuk

列表解析的特色的地方在于它改变了我们组织循环的方式和解析数组的模式。这是一种声明式的编程方法,告诉程序你想要什么而不去关心构建的过程。

类的支持

类是CoffeeScript对JavaScript的一个很重要的补充。JavaScript的原型功能很强大,写法上又恨别扭。正确地设置原型链以实现继承关系也是个很大的挑战。CoffeeScript从语法上直接支持类的定义,自然且隐藏细节。

class Animal
 constructor: (@name) ->
 move: (meters) ->
  alert @name + " moved #{meters}m."
class Snake extends Animal
 move: ->
  alert "Slithering..."
  super 5
class Horse extends Animal
 move: ->
  alert "Galloping..."
  super 45
sam = new Snake "Sammy the Python"
tom = new Horse "Tommy the Palomino"
sam.move()
tom.move()
Salin selepas log masuk

从实现上来说,CoffeeScript的类与JavaScript的构造函数和原型链那一套并无二致。所以,理解原型机制也是理解CoffeeScript类的基础。

关于JavaScript的糟粕

CoffeeScript的另一个目标是从语法层面上直接消除JavaScript的被人诟病的一些糟粕部分。前面已经说过关于分号的部分。关于var声明的部分。分号的机制暂且不去例会,总之CoffeeScript不用再去写分号了。

在JavaScript当中,最为人诟病的糟粕部分有两处,因为它们使用的情况最多而且容易出错。

全局变量

相等比较

全局变量

JavaScript的作用域规则很复杂,涉及到var声明机制和变量提升。在JavaScript里,构造一个全局变量是很容易的,有三种方式:

在全局的环境里用var声明

var name = 'name';
Salin selepas log masuk

在函数内用省略var的方式定义

function foo() {
  name = 'name';
}
Salin selepas log masuk

An Fenster gebundene Attribute

window.name = 'name';

Die erste und zweite Methode sind die häufigsten falschen Verwendungen. Zunächst wird nicht empfohlen, den Code direkt in der globalen Umgebung zu verwenden. Stattdessen sollte er in eine anonyme Funktion eingeschlossen werden, um den Umfang des Programms auf diese anonyme Funktion zu beschränken. Die zweite Verwendung besteht darin, die var-Deklaration vollständig zu vergessen. Bei der eigentlichen JavaScript-Codierung vergesse ich häufig die var-Deklaration (so wie ich oft vergesse, am Ende der Zeile ein Semikolon hinzuzufügen).

In CoffeeScript gibt es diese Sorge überhaupt nicht. Erstens wird der kompilierte JavaScript-Code nicht der globalen Umgebung ausgesetzt. Der gesamte Code wird automatisch in eine anonyme Funktion (function(){ ... })(); eingeschlossen. Dann werden alle Variablen automatisch mit var deklariert. Dies macht es schwierig, die globale Situation versehentlich zu verunreinigen, es sei denn, Sie verwenden die Zuweisung zum Fenster.

Gleichstellungsvergleich

Wir alle wissen, dass JavaScript zwei Vergleichsoperatoren hat: == und ===. Wir wissen auch, dass die Verwendung von == schwierig sein kann, daher geben wir normalerweise lieber ein weiteres Zeichen ein und verwenden ===. CoffeeScript hat nur einen Vergleichsoperator == und wird in JavaScripts === kompiliert, wodurch diese Gefahr vermieden wird.

Sollte ich CoffeeScript verwenden?

CoffeeScript vereinfacht und verbessert die Ausdrucksfähigkeit von JavaScript und vermeidet einige Fallstricke von JavaScript auf grammatikalischer Ebene so weit wie möglich. Wenn Sie damit Code schreiben, fühlen sich die Leute klarer und wohler und es wird weniger leicht, Fehler zu machen. Die ursprüngliche Absicht von CoffeeScript besteht darin, besseres JavaScript bereitzustellen.

CoffeeScript ist jedoch nicht mit JavaScript kompatibel. Es handelt sich weder um eine Teilmenge noch um eine Obermenge von JavaScript, sondern um eine Sprache mit offensichtlich anderen Ideen als JavaScript. Das Programmieren mit CoffeeScript erfordert eine Änderung des Konzepts. Obwohl dieses Konzept besser und natürlicher ist, ist es der Hauptgrund, warum manche Leute, die in ihren Gewohnheiten stecken bleiben, abgeschreckt werden.

CoffeeScript ist nicht für jeden geeignet. Manche Leute können die Verwendung von Einrückungen zum Organisieren von Codehierarchien oder die Verwendung von Pfeilfunktionsausdrücken einfach nicht akzeptieren. Für sie ist die Organisation ohne Funktionsschlüsselwort und geschweifte Klammern optisch nicht erfreulich.

Das Parsen von Listen ist sehr leistungsfähig, aber auch zu prägnant. Wer es gewohnt ist, komplexe JavaScript-Programme zu erstellen, ist mit diesem Ausdruck nicht vertraut.

Kurz gesagt: Sie können andere nicht zwingen, den Umgang mit CoffeeScript zu erlernen. JavaScript ist so leistungsstark, dass Sie Ihre Arbeit mit JavaScript gut erledigen können, solange Sie vorsichtig genug sind. Für diejenigen, die CoffeeScript ausprobieren möchten, müssen wir auch eine ermutigende Haltung vermitteln. Sie sind Krieger, die nach Innovation und Veränderung streben. CoffeeScript ist wirklich einen Versuch wert, es ist wirklich klein und es ist nicht schwer, es vollständig zu beherrschen.

Ich persönlich habe eine konservative Einstellung zur Implementierung von CoffeeScript im Team. Es wäre besser, wenn das Team von Anfang an CoffeeScript verwenden würde. Seien Sie vorsichtig, wenn Sie von CoffeeScript zu JavaScript wechseln. Eine Möglichkeit besteht darin, CoffeeScrip zunächst in einem kleinen Projekt auszuprobieren, um zu sehen, wie es funktioniert.

Für Einzelpersonen gibt es keine Einschränkungen. Wenn es dir wirklich gefällt, dann mach es. Sie können CoffeeScript verwenden, um Skripte zu schreiben, Ihre eigenen Websites zu erstellen und einige Gadgets zu erstellen.

Der obige Inhalt ist die schöne Art, Javascript-Code mit CoffeeScrip zu schreiben, die der Herausgeber vorgestellt hat. Ich hoffe, er gefällt Ihnen.

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

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

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)

Ganti aksara rentetan dalam javascript Ganti aksara rentetan dalam javascript Mar 11, 2025 am 12:07 AM

Penjelasan terperinci mengenai kaedah penggantian rentetan javascript dan Soalan Lazim Artikel ini akan meneroka dua cara untuk menggantikan watak rentetan dalam JavaScript: Kod JavaScript dalaman dan HTML dalaman untuk laman web. Ganti rentetan di dalam kod JavaScript Cara yang paling langsung ialah menggunakan kaedah pengganti (): str = str.replace ("cari", "ganti"); Kaedah ini hanya menggantikan perlawanan pertama. Untuk menggantikan semua perlawanan, gunakan ungkapan biasa dan tambahkan bendera global g: str = str.replace (/fi

Bina Aplikasi Web Ajax anda sendiri Bina Aplikasi Web Ajax anda sendiri Mar 09, 2025 am 12:11 AM

Jadi di sini anda, bersedia untuk mempelajari semua perkara ini yang dipanggil Ajax. Tetapi, apa sebenarnya? Istilah Ajax merujuk kepada kumpulan teknologi longgar yang digunakan untuk membuat kandungan web yang dinamik dan interaktif. Istilah Ajax, yang asalnya dicipta oleh Jesse J

10 JQuery Fun and Games Plugin 10 JQuery Fun and Games Plugin Mar 08, 2025 am 12:42 AM

10 Plugin Permainan JQuery yang menyeronokkan untuk menjadikan laman web anda lebih menarik dan meningkatkan keletihan pengguna! Walaupun Flash masih merupakan perisian terbaik untuk membangunkan permainan web kasual, jQuery juga boleh menghasilkan kesan yang mengejutkan, dan walaupun tidak setanding dengan permainan flash aksi tulen, dalam beberapa kes, anda juga boleh bersenang -senang di penyemak imbas anda. permainan jquery tic toe "Hello World" pengaturcaraan permainan kini mempunyai versi jQuery. Kod sumber JQuery Game Composition Crazy Word Ini adalah permainan mengisi kosong, dan ia dapat menghasilkan beberapa hasil yang pelik kerana tidak mengetahui konteks perkataan. Kod sumber JQuery Mine Sweeping Game

Bagaimana saya membuat dan menerbitkan perpustakaan JavaScript saya sendiri? Bagaimana saya membuat dan menerbitkan perpustakaan JavaScript saya sendiri? Mar 18, 2025 pm 03:12 PM

Artikel membincangkan membuat, menerbitkan, dan mengekalkan perpustakaan JavaScript, memberi tumpuan kepada perancangan, pembangunan, ujian, dokumentasi, dan strategi promosi.

JQuery Parallax Tutorial - Latar Belakang Header Animasi JQuery Parallax Tutorial - Latar Belakang Header Animasi Mar 08, 2025 am 12:39 AM

Tutorial ini menunjukkan cara membuat kesan latar belakang paralaks yang menawan menggunakan jQuery. Kami akan membina sepanduk header dengan imej berlapis yang mewujudkan kedalaman visual yang menakjubkan. Plugin yang dikemas kini berfungsi dengan JQuery 1.6.4 dan kemudian. Muat turun

Bagaimanakah saya mengoptimumkan kod JavaScript untuk prestasi dalam penyemak imbas? Bagaimanakah saya mengoptimumkan kod JavaScript untuk prestasi dalam penyemak imbas? Mar 18, 2025 pm 03:14 PM

Artikel ini membincangkan strategi untuk mengoptimumkan prestasi JavaScript dalam pelayar, memberi tumpuan kepada mengurangkan masa pelaksanaan dan meminimumkan kesan pada kelajuan beban halaman.

Kandungan Div Refresh Auto Menggunakan JQuery dan Ajax Kandungan Div Refresh Auto Menggunakan JQuery dan Ajax Mar 08, 2025 am 12:58 AM

Artikel ini menunjukkan bagaimana untuk menyegarkan semula kandungan div secara automatik setiap 5 saat menggunakan jQuery dan Ajax. Contohnya mengambil dan memaparkan catatan blog terkini dari suapan RSS, bersama -sama dengan timestamp refresh terakhir. Imej pemuatan adalah opsyena

Bermula dengan Matter.js: Pengenalan Bermula dengan Matter.js: Pengenalan Mar 08, 2025 am 12:53 AM

Matter.js adalah enjin fizik badan tegar 2D yang ditulis dalam JavaScript. Perpustakaan ini dapat membantu anda dengan mudah mensimulasikan fizik 2D dalam penyemak imbas anda. Ia menyediakan banyak ciri, seperti keupayaan untuk mencipta badan yang tegar dan menetapkan sifat fizikal seperti jisim, kawasan, atau ketumpatan. Anda juga boleh mensimulasikan pelbagai jenis perlanggaran dan daya, seperti geseran graviti. Matter.js menyokong semua pelayar arus perdana. Di samping itu, ia sesuai untuk peranti mudah alih kerana ia mengesan sentuhan dan responsif. Semua ciri-ciri ini menjadikannya bernilai masa untuk belajar menggunakan enjin, kerana ini memudahkan untuk membuat permainan atau simulasi 2D berasaskan fizik. Dalam tutorial ini, saya akan merangkumi asas -asas perpustakaan ini, termasuk pemasangan dan penggunaannya, dan menyediakan

See all articles