npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@spat.ne.hochu/combine-core

v0.1.0

Published

Проект в активной разработке базовых принципов, это ещё даже не alpha.

Downloads

2

Readme

bemSlim

Проект в активной разработке базовых принципов, это ещё даже не alpha.

Это повторно используемые конпоненты разметки и стилей основанные на БЭМ подходе, компилируемые под фронт и бэк, в целом с некоторыми ограничениями возможно компилить одни и теже структуры в динамические вьюхи под любой язык: php, ejs, erb, angular, react.

А ещё это модульный css с наследованием и примесями с возможностью компиляции в любую методологию.

Roadmap:

  1. Формат шаблонов будет меняться в сторону минимализма, но не во вред читаемости.
  2. Возможно будет два формата один строгий, второй похож на coffee или rubySlim.
  3. Дописать директиру mixin для смешивания древовидных структур что бы работала в сложных случаях.
  4. Написать какие-то базовые вещи что бы можно было попробовать на php, ruby, nodejs, angular, react.
  5. После того как всё будет более менее работать отрефакторить и написать тесты на стабильные компоненты.

На сегодня:

  1. Работает самый простой кейс, в котором выводится таблица заказов клиента
  2. Можно смешивать древовидные структуры

Наглядно:

Главый шаблон Orders содержит заголовок в тремя элементами и повторяемый элемент order на который будет примиксова структура Order. На сам же шаблон Orders будет примешана структура TableBeauty, что сделает его таблицей с заголовком c правильной семантикой. Стоит заметить что TableBeauty похож на стандартную структуру и такие штуки будет позже помешены в STD namespace проекта. String это временный встроенный тип для вывода статичных строк, потом это будет заменено на короткий синтаксис.

Orders
  mixin = 'TableBeauty'
 
     caption
         id
             String
               value = 'номер'
 
         title
             String
               value = 'название'
 
         summary
             String
               value = 'сумма'
 
     order
       each  = 'orders > order'
       mixin = 'Order'

Примесь таблицы TableBeauty задает семантику html и добавляет стили (пока инлайны), директива merge уточняет как именно накладывать примесь на узел, это похоже на css селекоторы позиции элемента. Можно знаметить что th станут все дочернии узлы первого узла tr. Конечно пока не обошлось без явного дублирования, но это будет допилено.

TableBeauty
  tag = 'table'
  css = 'display:table'

    row
      merge = '*'
      tag   = 'tr'
      css   = 'display:table-row'

        cell
          merge = '*'
          tag   = 'td'
          css   = 'display:table-cell'

    head
      merge = '0'
      tag   = 'tr'
      css   = 'display:table-row;background:#eee;font-weight:900'

        headCell
          merge = '*'
          tag   = 'th'
          css   = 'display:table-cell'

И в окончании всего на элемент order накладывается структура Order, но здесь это больше похоже на обычный require/include. Структура Order отвечает за вывод одного заказа.

Order
    id
      var = 'order.id'

    title
      var = 'order.title'

    summary
      var = 'order.summary'

Компилируем в php

> node index

На выходе мы получим такой вот стремненьний код, со странными классами. Классы сейчас особо не нужны, главное что он хоть какие то выводит.

<table class="orders+-table-beauty" styles="display:table">
    <tr class="orders+-table-beauty__caption" styles="display:table-row;background:#eee;font-weight:900">
        <th class="orders+-table-beauty__id" styles="display:table-cell">
            номер        </th>
        <th class="orders+-table-beauty__title" styles="display:table-cell">
            название        </th>
        <th class="orders+-table-beauty__summary" styles="display:table-cell">
            сумма        </th>
    </tr>
    <? foreach ($orders as $order) { ?>
    <tr class="orders+-table-beauty__order+-order" styles="display:table-row">
        <td class="orders+-table-beauty__id" styles="display:table-cell"><?=$order->id;?></td>
        <td class="orders+-table-beauty__title" styles="display:table-cell"><?=$order->title;?></td>
        <td class="orders+-table-beauty__summary" styles="display:table-cell"><?=$order->summary;?></td>
    </tr>
    <? } ?>
</table>

Следите за изменениями, спасибо за внимание!