Start your node with Kotlin

Ta Theerasan Tonthongkam
ta tonthongkam
Published in
3 min readSep 4, 2018

ในนาทีนี่ถ้าพูดถึงภาษาใหม่ที่มาแรงมาก หลายๆ คนคงนึกถึง Kotlin แต่หลายๆ คนยังเข้าใจว่า Kotlin มีมาเพื่อ JAVA และ Android อย่างเดียว — แต่เดี๋ยวก่อน เรามี Kotlin to JS ด้วยนะ และใน Gradle มี plugin ที่ชื่อว่า kotlin2js ด้วย เพื่อที่จะแปลง Kotlin เป็น JS — Component ต่างๆ ที่เป็น js ก็สามารถเขียน Kotlin ได้แล้วนะ วันนี้เราจะมาเริ่มที่ Node JS with Kotlin

IDE เป็นเครื่องมืออีกตัวที่จะไม่พูดถึงไม่ได้ เครื่องมือที่ดี ย่อมทำให้การทำงานดีขึ้น เร็วขึ้น วันนี้เลยจะมานำเสนอ IntelliJ — เพราะ IDE สายเว็บมีเยอะมาก ไม่ว่าจะเป็น Atom, Sublime, VScode หรือ WebStrom — ส่วนตัวเชียร์ค่าย JetBrain อยู่ แต่ WebStrom แพงมากกกกกกกกกกกกกก เลยมองหาตัวอื่นเข้ามาทดแทน และ IntelliJ ก็มี Community Version อยู่ซึ่งฟรี และรองรับ Kotlin ก็เลยแนะนำตัวนี้

สิ่งที่ควรมีก่อนเริ่มโปรเจค

  1. IntelliJ CE — download
  2. Node — download

สร้างโปรเจค

  1. เปิด IntelliJ เลือกสร้างโปรเจคใหม่

2. เลือก Gradle Project, ในช่อง Additional Libraries and Frameworks เพิ่ม Kotlin (JavaScript)

3. ตั้งค่าโปรเจคต่างๆ นาๆ ตาม Wizard ของ IDE

4. จากนั้นเราจะได้ Gradle Project, ขั้นตอนถัดไป ไปที่ Terminal รันคำส่ง init

$ npm init

ในขั้นตอนนี้ให้เราตั้งค่า node ตาม command ไปเรื่อยๆ ในส่วนของ entry point ให้เลือกเป็น node/index.js

แค่นี้เราก็ได้ Node ในโปรเจคแล้ว

5. เพิ่ม Kotlin เข้าโปรเจค

$ npm install kotlin --save

รอจนกว่าจะ Install เสร็จ เราก็จะได้ dependencies ของ Kotlin ในโปรเจคแล้ว

6. ตั้งค่า build.gradle ตอนนี้เราได้ Source file เป็น Kotlin แล้ว แต่เราต้อง Build เป็น JS เพื่อที่จะให้รันบน Node ได้ เราจึงต้องตั้งค่า Gradle เพิ่มดังนี้

group 'node-kt'
version '1.0-SNAPSHOT'

buildscript {
ext.kotlin_version = '1.2.51'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}

apply plugin: 'kotlin2js'

repositories {
mavenCentral()
}

dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib-js:$kotlin_version"
testCompile "org.jetbrains.kotlin:kotlin-test-js"
}

compileKotlin2Js.kotlinOptions {
moduleKind = "commonjs"
outputFile = "node/index.js"
}

ข้อสำคัญ ในส่วนของ compileKotlin2Js.kotlinOptions ให้ตั้งค่า outputFile ให้ตรงกับการตั้งค่าในข้อ 4

ตอนนี้ Environment ของเราเหมาะที่จะเขียน Kotlin บน Node แล้ว เรามาเริ่ม Hello word กัน

Hello World

  1. เพิ่ม express dependencies ก่อน
$ npm install express --save

2. เริ่มสร้างไฟล์ Kotlin, สร้างไฟล์ src/main/kotlin/Index.kt แล้วใส่โค้ด Hello World เข้าไป

external fun require(module:String):dynamic

fun main(args: Array<String>) {

val express = require("express")
val app = express()

app.get("/") { _, res ->
res.type("text/plain")
res.send("Hello node kotlin")
}

app.listen(3000) {
println("Listening on port 3000")
}
}

จากโค้ดข้างต้นเป็นจากเรียก Express JS เพื่อที่จะแสดงคำว่า “Hello node kotlin” ที่ port 3000

3. build and run project

build command
$ ./gradlew build

หลังจาก Build เสร็จเราจะได้ File node/index.js ที่พร้อมรันดังภาพ

run command
$ node node/index.js

4. ไปยัง Browser ที่ localhost:3000 จะได้ผลลัพธ์ดังภาพ

ข้อดี/ ข้อเสีย

เราสามารถใช้ภาษา Kotlin ในการพัฒนา Node app ได้แล้ว สำหรับสาย Android น่าจะช่วยลดกำแพงด้านภาษาลงไปได้บ้าง แต่อย่างไรก็ตาม Kotlin JS != Kotlin มันยังมีอะไรหลายๆ อย่าง ที่ไม่เหมือน Kotlin บน Android โดยเฉพาะ dynamic และ Auto Suggest ของ 3rd Libraries เรียกได้ว่าไม่มีเลยดีกว่า เราต้องจำ Systex และคำสั่งเอง

แต่ถ้าในโปรเจคเราเรียก 3rd Party ไม่เยอะ คิดว่าจำได้ แต่อยากได้ความสามารถอื่นๆ ของ Kotlin ก็โอเคที่จะใช้นะ — ขอให้ Kotlin Community Support node อย่างจริงจัง น่าจะทำให้ชีวิตการพัฒนา node ง่ายขึ้นนะ

สรุป

Kotlin มี plugin Kotlin2js นะ ใครอยากใช้ตอนนี้ให้พิจารณาดีๆ ก่อน เพราะ Auto Suggest มันไม่มี เทียบกับ TypeScript ไม่ได้ แต่ถ้าเรามี Class ที่เป็น Logic เยอะกว่า 3rd party ละก็ Kotlin2js ก็น่าสนใจอยู่นะ ลองเล่นลองใช้กันดู แล้วมาพูดคุยกัน

--

--