Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Dart лучше того же GWT
Если не брать в расчет GWT, то преимущество в том, что и клиент и сервер можно разработать на одном языке.
Если сравнивать с JS, то, на мой взгляд, более приятный синтаксис
более удобный процесс разработки
тестировать можно не собирая проектЭто не аргумент?
Трансляторов в JS код как грязи.Дальше что?
Вы про ES 2015 что-нибудь слышали?Слышал и видел, а вы, видимо, видите только то, что хотите увидеть, я русским языком написал «на мой взгляд».
более удобный процесс разработкиНе лично для меня, для приличия зайдите по ссылке и прочитайте статью хотя бы по диагонали и отметьте для себя, что это перевод и что про удобство не я первый написал.
Опять же, лично для вас.
Не лично для меня, для приличия зайдите по ссылке и прочитайте статью хотя бы по диагонали и отметьте для себя, что это перевод и что про удобство не я первый написал.Судя по вашим постам вы являетесь ярым адептом Dart'a, поэтому лично для вас.
просто унижает ваш DartОтвечу на это вашей же цитатой:
PS: пожалуйста хоть как-то аргументируйте свои выводы.
Судя по вашим постам вы являетесь ярым адептом Dart'a, поэтому лично для вас.Т.е. по вашему тот факт, что я пишу только о Dart, делает меня ярым адептом и нивелирует все те положительные отзывы, которые приведены в моих статьях или переводах и еще больше положительных отзывов и статей, которых нет среди моих статей и переводов, так получается? Это как утверждать, что врачи пишущие о пользе прививок делают сами прививки бесполезными.
JSON — JSON.decode/encode
Уточните перед какими решениями вы хотите получить преимущества?
const app = require('express')();
const bodyParser = require('body-parser');
app.use(bodyParser.json());
var animals = [];
const findAnimalById = (id) => animals.filter(a => a.id === Number(id))[0];
const removeAnimal = (id) => animals = animals.filter(a => a.id !== Number(id));
const makeAnimal = (params) =>
animals.push(Object.assign({ id: animals.length + 1 }, params)) &&
animals[animals.length - 1];
app.get('/list', (req, res) => res.json(animals));
app.get('/', (req, res) => res.json(findAnimalById(req.query.id)));
app.post('/', (req, res) => res.json(makeAnimal(req.body)));
app.delete('/', (req, res) => res.json(removeAnimal(req.query.id)))
app.listen(3000);
import 'dart:io';
import 'package:logging/logging.dart';
import 'package:rpc/rpc.dart';
import '../lib/server/api.dart';
final ApiServer apiServer = new ApiServer(prettyPrint: true);
main() async {
apiServer.addApi(new MyApi());
HttpServer server = await HttpServer.bind(InternetAddress.ANY_IP_V4, 8080);
server.listen(apiServer.httpRequestHandler);
}
@ApiClass(version: 'v1')
class MyApi {
List _animals = [];
@ApiMethod(path: 'animals')
List<Animal> getAnimals() => _animals;
@ApiMethod(path: 'animals', method: 'POST')
Animal postAnimal(Animal animal) {
_animals.add(animal);
return animal;
}
}
package main
import (
"encoding/json"
"flag"
"net/http"
"strconv"
)
var addr = flag.String("http", ":3000", "http service address")
type Animal struct {
ID int
Name string
}
func main() {
animals := []Animal{
{0, "python"},
{1, "sad panda"},
{2, "candy bear"},
{3, "camel"},
{4, "cat is fine too"},
}
flag.Parse()
http.HandleFunc("/list", func(w http.ResponseWriter, _ *http.Request) {
json.NewEncoder(w).Encode(animals)
})
http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
defer func() {
if err := recover(); err != nil {
http.Error(w, http.StatusText(http.StatusBadRequest),
http.StatusBadRequest)
}
}()
id, _ := strconv.Atoi(req.FormValue("ID"))
switch req.Method {
case "GET":
json.NewEncoder(w).Encode(animals[id])
case "POST":
animals = append(animals, Animal{
len(animals),
req.FormValue("Name")})
case "DELETE":
animals = append(animals[:id], animals[id+1:]...)
}
})
panic(http.ListenAndServe(*addr, nil))
}
Создаём RESTful API с помощью Dart за несколько минут