Pull to refresh
8
0
Никита @akihayase

Разработчик

Send message

Ничего страшного в этом нет, это же всего лишь обложка статьи

Nim генерирует один цельный JS файл.

Большое спасибо за замечания, отредактировал статью.

чем позиционирует себя HappyX

В начале статьи я указывал ссылку на предыдущую статью. В ней описан как HappyX, так и Karax (тоже Nim фреймворк), также приводится сравнение с Vue.js.

Как я могу судить - Nim не придерживается каких-то спецификаций и генерирует объёмный код, так что здесь я согласен.

Nim это язык, на котором как раз написан Happyx, другие фреймворки помимо Happyx и Karax либо не обновляются, либо очень редко обновляются.

Если можете - дайте пожалуйста несколько советов по улучшению статьи ?

Не знаком с mypy, но выглядит интересно, спасибо за комментарий.

Nim использует различные оптимизации при компиляции на таргет языки, поэтому соотношение по скорости там будет весьма маленькое, либо его вообще не будет.

Конечно можно.
Возьмем в пример C-функцию printf:

import nimpy

proc printf(formatstr: cstring) {.importc: "printf", varargs,
                                  header: "<stdio.h>".}

proc callPrintF(formatstr: string) {.exportpy: "printf".} =
  printf(cstring(formatstr))

А затем скомпилируем и вызовем printf на стороне Python :)

import mybinds

mybinds.printf("hello, world!")

Неправильно написал, поправил)

возможно у с++ какие-то оптимизации, которые с не делает, да и надо глубже в сам Nim копать, точно сказать не могу.

Отчасти согласен с вами, однако есть две вещи, которые позволяет Nim:
1. Делать JS вставки напрямую в код, который выйдет после компиляции
2. Взаимодействовать с JS напрямую через стандартную библиотеку jsffi, таким образом позволяя разработчику обращаться к любому JS объекту - вызывать функцию/метод, обращаться к переменной и так далее.

Таким образом, вы можете использовать JavaScript, при этом остаетесь на Nim :)

UPD:
Далеко ходить не надо, ниже пример из официальной документации по JSFFI:

import jsffi

var console {.importc, nodecl.}: JsObject

console.log("Hello, world!")

изюминка заключается в том, что вы можете разрабатывать одностраничные сайты не на JS, а на Nim :)

Как я писал выше - обработка запросов происходит в С

  1. RequestModelBase на данный момент сыроват, может в built-in типы и типы, унаследованные от него самого же. поддерживает пока что только JSON.

  2. https://web-frameworks-benchmark.netlify.app/result

  3. Над поддержкой асинхронных функций я работаю, но это кажется для меня немного сложным, ибо вызов всех функций происходит из С

  4. Работаю один, поэтому прогресс медленный: https://hapticx.github.io/happyx/#/guide/

  5. На стороне Nim это - поддержка SSR/SPA; DSL; компоненты, популярные в остальных фреймворка фичи из коробки (генерация документации, built-in UI и т.д.). Касательно Python - привязки пока что действительно сыроваты, но я работаю над этим :)

Ключевая особенность заключается как раз в том, что это привязки на Python. А выглядит использование Happyx как "Flask и множество других фреймворком" не случайно, а чтобы людям было удобно переходить на него.

В дальнейшем планирую добавить поддержку SPA, как и в оригинале. Ну и переносить остальные функции.

касательно логики бекенда и фронтенда - да, я не спорю, она разнится. Однако здесь Вы можете писать клиентскую часть как на бекенде, так и на фронтенде, так как Ním компилируется как в C, так и в JS.

Здесь Вы получаете прирост к скорости самой разработки, так как не нужно "переключать" свой мозг на другой синтаксис, возможно другие языковые парадигмы.

Да, прямо во view. А также в компонентах. В статье приведены примеры типа HelloWorld

хорошо, как бы Вы описали хороший код на Nim?

касательно CSS - просто берете и пишите голый CSS

1

Information

Rating
Does not participate
Location
Канск, Красноярский край, Россия
Date of birth
Registered
Activity

Specialization

Frontend Developer, Fullstack Developer
Middle
From 120,000 ₽
Git
Python
MongoDB
SQL
JavaScript
Vue.js
Nuxt.js