


Gunakan CoffeeScrip untuk menulis kod javascript dengan cara yang cantik_petua javascript
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)
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 ? __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
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
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
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
Kod JavaScript yang setara tidak boleh terlalu ceroboh:
list = [1, 2, 3]; list.map(function(e) { return e + 1; });
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); }
用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
回到列表解析的主题。与while一样,for结构也是一种循环的表达,其结果也是一个数组。回到先前的例子,下面的小代码的list结果就是['t', 'c', 'w']。
food_list = ['toast', 'cheese', 'wine'] list = (food[0] for food in food_list)
我们已经看到for循环的each形式
eat food for food in food_list
以及它的map形式
(food[0] for food in food_list)
下面给出它的filter形式
(food for food in food_list when food is 'wine')
列表解析的特色的地方在于它改变了我们组织循环的方式和解析数组的模式。这是一种声明式的编程方法,告诉程序你想要什么而不去关心构建的过程。
类的支持
类是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()
从实现上来说,CoffeeScript的类与JavaScript的构造函数和原型链那一套并无二致。所以,理解原型机制也是理解CoffeeScript类的基础。
关于JavaScript的糟粕
CoffeeScript的另一个目标是从语法层面上直接消除JavaScript的被人诟病的一些糟粕部分。前面已经说过关于分号的部分。关于var声明的部分。分号的机制暂且不去例会,总之CoffeeScript不用再去写分号了。
在JavaScript当中,最为人诟病的糟粕部分有两处,因为它们使用的情况最多而且容易出错。
全局变量
相等比较
全局变量
JavaScript的作用域规则很复杂,涉及到var声明机制和变量提升。在JavaScript里,构造一个全局变量是很容易的,有三种方式:
在全局的环境里用var声明
var name = 'name';
在函数内用省略var的方式定义
function foo() { name = 'name'; }
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.

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.

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.

Aplikasi JavaScript di dunia nyata termasuk pengaturcaraan sisi pelayan, pembangunan aplikasi mudah alih dan Internet of Things Control: 1. Pengaturcaraan sisi pelayan direalisasikan melalui node.js, sesuai untuk pemprosesan permintaan serentak yang tinggi. 2. Pembangunan aplikasi mudah alih dijalankan melalui reaktnatif dan menyokong penggunaan silang platform. 3. Digunakan untuk kawalan peranti IoT melalui Perpustakaan Johnny-Five, sesuai untuk interaksi perkakasan.

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

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

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.

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.

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.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod