What is wrong with NodeJs and Js? Why Deno and Ts?
Tags: deno, typescript, javascript, node
Published: 2020-04-30 01:23:57

## Java script කියන්නේ මොනවද?

![](https://mdn.mozillademos.org/files/13502/cake.png)

JavaScript කියන්නේ scripting හෝ programming language web complex features එකතු කරන්න පාවිච්චි කරන. [ECMAScript](https://en.wikipedia.org/wiki/ECMAScript) specification අනුකුලව නිර්මාණය කරමපු [programming language](https://en.wikipedia.org/wiki/Programming_language) විදියටත් හදුන්වා දෙන්න පුලුවම්. JavaScript [high-level](https://en.wikipedia.org/wiki/High-level_programming_language), often [just-in-time compiled](https://en.wikipedia.org/wiki/Just-in-time_compilation), හා [multi-paradigm](https://en.wikipedia.org/wiki/Programming_paradigm) වෙනවා . Js වලට තියෙනවා [curly-bracket syntax](https://en.wikipedia.org/wiki/List_of_programming_languages_by_type#Curly-bracket_languages), [dynamic typing](https://en.wikipedia.org/wiki/Dynamic_typing), [prototype-based](https://en.wikipedia.org/wiki/Prototype-based_programming)[object-orientation](https://en.wikipedia.org/wiki/Object-oriented_programming) හා [first-class functions](https://en.wikipedia.org/wiki/First-class_function) තියෙනවා.

## True Script කියන්නේ මොකක්ද?

![TypeScript Introduction](https://4.bp.blogspot.com/-pYn2LAUvMNQ/WtWXBIT2IRI/AAAAAAAACK8/n9pH7ikTpo4xqIl8odqkJ7kfnbfpcsbxACLcBGAs/s1600/typescript.png)
TypeScript කියන්නේ [open-source](https://en.wikipedia.org/wiki/Open-source_software)[programming language](https://en.wikipedia.org/wiki/Programming_language) develop හා maintain by [Microsoft](https://en.wikipedia.org/wiki/Microsoft) කරන. [static typing](https://en.wikipedia.org/wiki/Static_typing) තියෙන JavaScript වල [superset](https://en.wikipedia.org/wiki/Superset) විදියට හදුන්වන්න පුලුවම්.

## Java script vs True script

![Typescript vs Javascript: Difference You Should Know](https://hackr.io/blog/typescript-vs-javascript/thumbnail/large)

JavaScript + more features = TypeScript

-   [Static Type Checker](https://www.typescriptlang.org/docs/handbook/advanced-types.html)
-   [Interfaces](https://www.typescriptlang.org/docs/handbook/interfaces.html)
-   [Generics](https://www.typescriptlang.org/docs/handbook/generics.html)
-   [Namespaces](https://www.typescriptlang.org/docs/handbook/namespaces.html)
-   [Null checking](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-0.html)
-   [Access Modifiers](https://www.typescriptlang.org/docs/handbook/classes.html)

කියන features ටික මුලික වශයෙන් වලට JavaScript එකතු කරලා තමයි TypeScript හදලා තියෙන්නේ. ඊට අමතරව maintain හා debug කරන්න ලේසි Ts Js වඩා.

{% youtube 9KzQ9xFSAEU %}

## NodeJs කියන්නේ මොකක්ද?

![File:Node.js logo.svg - Wikimedia Commons](https://upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Node.js_logo.svg/1024px-Node.js_logo.svg.png)
Node.js කියන්නේ [open-source](https://en.wikipedia.org/wiki/Open-source_software), [cross-platform](https://en.wikipedia.org/wiki/Cross-platform), [JavaScript](https://en.wikipedia.org/wiki/JavaScript) runtime environment JavaScript code [web browser](https://en.wikipedia.org/wiki/Web_browser) පිටතින් executes කරන්න හදපු. Node.js ගන්නේ මුලිකවම command line tools හා for server-side scripting වලට. 2009 දී Ryan Dahl තමයි Node.js ලියන්නේ.

## Deno කියන්නේ මොකක්ද?

![File:Deno.svg - Wikipedia](https://upload.wikimedia.org/wikipedia/commons/8/84/Deno.svg)
deno කියන්නේ [runtime](https://en.wikipedia.org/wiki/Runtime_system) [JavaScript](https://en.wikipedia.org/wiki/JavaScript) හා [TypeScript](https://en.wikipedia.org/wiki/TypeScript) වල [V8](https://en.wikipedia.org/wiki/Chrome_V8) JavaScript ජින්ජිම base කරන් Rust (මගේ Rust serie කියවන්න අමතක කරන්න එපා) වලින් ලියපු. May , 2018 මැයි 13 Ryan Dahl deno ලියන්න පන්ගන්නවා. ඔව් ඔව් Node.js ලියපු කෙනාම තමයි.

## <del>NodeJs vs deno</del>  
## 10 Things I Regret About Node.js

{% youtube M3BM9TB-8yA %}

## **package.json**

-   NPM ඇතුළුව Node distribution standard Node විසින්ම නිර්මාණය කිරීම.
-   modules සදහා Centralized (privately controlled) repository යොදාගැනීම.
-   `require(“sommodule”)` මේවා සදහා නිශ්චිත: package.json, local node_modules folder, NPM ලගේ database.
-   files directory ලෙස “module” යන සංකල්පය ඉහළ නැංවීමට අනවශ්‍ය වියුක්ත කිරීමක් සිදු කිරීම. web නොපවතින.
-   license, repository වැනි අනවශ්‍ය තොරතුරු ඇතුළත් වේ.

## **node_modules**

-   Module resolution algorithm අතිශයින්ම සංකීර්ණයි.
-   Vendored-by-default හොද intentions තිබුනත් $NODE_PATH ක්‍රියා කරීම.
-   browserයෙන් බැහැර වීම.

## **Require without the extension**

-   අනවශ්‍ය ලෙස explicit අඩු වීම.
-   browser ක්‍රියා කරන ආකාරය නොවීම.
-   module loader guess කිරීමට සිදිවිම.

## **index.js**

-   module loading system අනවශ්‍ය ලෙස සංකීර්ණ වීම.
-   package.json සහාය ලබාගැනීමෙන් පසු කොහෙත්ම අවශ්‍ය නොවීම.

## Project Status / Disclaimer

### Philosophy

Deno වල අරමුණ modern programmer ලාට productive හා secure scripting environment ලබාදීමය.

Deno සෑම විටම single executable ලෙස distribut කරයි. Deno program URL දුනහම, ඒක run කරන්න පුලුවම් ~15 megabyte වඩා අඩු zipped executable. Deno runtime හා package manager යන දෙයාකාරයෙන්ම ක්‍රියා කරයි. modules load: URLs කරන්න එය standard browser-compatible protocol භාවිතා කරයි.

Deno යනු ඓතිහාසිකව bash හෝ python වලින් ලියා ඇති utility scripts සඳහා හොඳ ආදේශනයකි.

### Goals

-   single executable (deno) පමණක් ලබා දේ.
-   Secure Defaultම ලබා දේ.
-   විශේෂයෙන් අවසර දී නොමැති විට, scripts වලට files, environment, හෝ network ප්‍රවේශ වෙන්න බෑ.
-   Browser compatible: Deno programs වල subset (හෝ ඒ සඳහා feature test) JavaScript වලින් සම්පූර්ණයෙන්ම ලියා ඇත්තේ global Deno namespace භාවිතා නොකරය , වෙනසක් කරන්නේ නැතුව web browser වල run කරන්න පුලුවම්.
-   developer experience වැඩි කරන්න unit testing, code formatting, and linting වගේ built-in tooling සපයයි.
-   V8 concepts user land leak නොකරයි.
-   HTTP efficiently serve කරන්න පුලුවම්.

### Comparison to Node.js

-   Deno npm භාවිතා නොකරයි
-   URLs හෝ file paths විදියට දීල තියෙන modules එක පාවිච්චි පාවිච්චි කරන්නේ.
-   Deno module resolution algorithm package.json පාවිච්චි කරන්නේ නෑ.
-   Deno වල හැම async actions promise return කරනවා. මේ අනුව Deno Node වලට වඩා වෙනස් APIs දෙන්නේ.
-   Deno වලට file, network, හා environment access වලට explicit permissions තියෙන්න ඕනි.
-   Deno හැම වෙලාවේම වැඩ කරන්නේ නැතුව යන්නේ uncaught errors වලදී (විතරයි).

"ES Modules" ගන්නේ, require() support කරන්නේ නෑ. Third party modules URL හරහා import කරන්නේ.

```typescript 
import * as log from "https://deno.land/std/log/mod.ts";
```
### Other key behaviors

-   first execution දී Remote code අරන් cached කර ගන්නවා `--reload flag` දාල code run වෙනකම් update වෙන්නේ නෑ. (ඉතින්, මේකට plane උනත් වැඩ කරන්න පුලුවම්.)
-   remote URL වලින් load කරපු Modules/files immutable වෙනවා වගේම cache කරනවා.

>> Don't forget to say hello to the search box for further details.

---

## References

https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/What_is_JavaScript
https://en.wikipedia.org/wiki/JavaScript
https://en.wikipedia.org/wiki/TypeScript
https://stackify.com/typescript-vs-javascript-migrate/
https://hackr.io/blog/typescript-vs-javascript
https://en.wikipedia.org/wiki/Node.js
https://en.wikipedia.org/wiki/Deno_(software)
https://medium.com/@imior/10-things-i-regret-about-node-js-ryan-dahl-2ba71ff6b4dc
https://deno.land/std/manual.md