Вы наверняка привыкли, что для того, чтобы подключить внешний JavaScript код на вашей HTML-страничке, нужно писать длинные конструкции вроде этой:

<script src="JS/example.js"></script>

Много времени я мирился этой конструкцией, но однажды мне стало лень писать её, потому что понял, что мне вполне по силам сократить её до такой:

@j JS/example

И для того, чтобы эта штука ожила и подключила к HTML example.js, я реализовал библиотеку Includor.js.

Подключение


Чтобы подключить мою библиотеку, скопируйте этот код и вставьте в свой HTML:

<script src="http://raw.githubusercontent.com/malyutinegor/malyutinegor.github.io/master/libs/includor/includor.min.js"></script>

А потом этот:

@gj malyutinegor: malyutinegor.github.io master/libs/includor/hello.js

Чтобы начать интерпретацию, необходимо выполнить этот JavaScript-код:

I.start();

При выполнении этого кода все конструкции библиотеки вроде @j examaple, @c hello и т.д. автоматически исчезнут из HTML-кода, и, соответственно, со страницы.

Если всё прошло успешно, то у вас в консоли должны появиться два сообщения: «Includor.js is ready for use!» и «Hello, Includor.js!»

Если вы хотите сразу скопировать код, копируйте или тут скачайте:

<html>
		<head>
			<title>Includor.js tests</title>
			<meta charset="utf-8">
		</head>
		<body>
			<!-- Includes -->
			@gj malyutinegor: malyutinegor.github.io master/libs/includor/hello
		
		
			<!-- Scripts -->
			<script src="http://raw.githubusercontent.com/malyutinegor/malyutinegor.github.io/master/libs/includor/includor.min.js"></script>
			
			<script>
				I.start()
			</script>
		</body>
</html>

Функционал HTML


Чтобы подключить файл JavaScript, надо написать команду в HTML, которую вы уже видели выше:

@j путь/до/вашего/js/безрасширения

Похожая команда нужна, чтобы подключить CSS:

@c путь/доВашего/css/без/расширения

Можно также легко загрузить JS и CSS с Github:

@gj имя_пользователя: репозиторий_пользователя веткаРепозитория/путь/до/вашего/js/без/расширения
@gс имя_пользователя: репозиторий_пользователя ветка_репозитория/путьДо/вашего/css/без/расширения

Функционал JavaScript


Также библиотека Includor.js добавляет в JavaScript 2 полезные функции:

  1. I.JS(path)
    Позволяет вам добавить новый скрипт в HTML-код.
    path — путь до скрипта с расширением.
  2. I.CSS(path)
    Позволяет вам добавить новую CSS-таблицу в HTML-код.
    path — путь до CSS-таблицы с расширением.
  3. I.start()
    Команда, которую вы уже видели выше. Запускает интерпретацию конструкций Includor.js.

Интересный факт


Промежутки между словами в конструкции могут любой длины, поэтому сработает даже такой код:

@gj      githubuser      :hello            html/JS/example

Заключение


Моя библиотека позволяет легко подключать JavaScript-код и CSS-таблицы. Очень надеюсь, что она кому-то поможет.

Спасибо за внимание!

P.S.: исходный код библиотеки и минифицированную версию можно скачать на Гитхабе.
Поделиться с друзьями
-->

Комментарии (48)


  1. zag2art
    11.11.2016 16:15
    +14

    не понял, какова добавочная ценность?


    1. DrPass
      11.11.2016 16:49
      +20

      Это каноничный пример ещё одной JS-библиотеки, которая ничего полезного не делает, но зато увеличит объем кода вашей страницы.


      1. GLaDosSystem
        12.11.2016 09:17
        -1

        Это только первая версия, я сейчас делаю на node.js, которая будет нам уже нашу страничку с конструкциями преобразовывать в обычные теги.


        1. DrPass
          12.11.2016 15:34
          +1

          Ну т.е. вы считаете, что и скрипты под NodeJS слишком мало бесполезного кода выполняют, надо добавить?


          1. GLaDosSystem
            12.11.2016 20:33
            -2

            Я просто сказал, куда мне надо двигаться, исходя из мнения других комментаторов поста.


            1. DrPass
              12.11.2016 21:27
              +2

              Хм. Насколько я прочитал других комментаторов, они почти все единодушно полагают, что вам в этом направлении лучше вообще не двигаться.


  1. lair
    11.11.2016 16:15
    +10

    я реализовал библиотеку Includor.js.

    … для подключения которой нужно написать длинный код. Смысл?


    (не говоря уже о том, что в приложениях с сервер-сайдом все может быть совсем иначе)


  1. iAchilles
    11.11.2016 16:17
    +2

    Однако, для того чтобы подключить вашу библиотеку, все также придется использовать длинные конструкции вроде этой

    <script src="http://raw.githubusercontent.com/malyutinegor/malyutinegor.github.io/master/libs/includor/includor.min.js"></script>
    


    1. GLaDosSystem
      12.11.2016 12:12
      -2

      Её можно оттуда скачать.


      1. GLaDosSystem
        12.11.2016 20:47
        -2

        image


  1. tmnhy
    11.11.2016 16:25
    +27

    Резюме:
    если вы не хотите писать свою длинную строку, напишите мою длинную строку, а после этого вам все-таки придется написать и свою строку тоже.


  1. KlimovDm
    11.11.2016 16:27
    +4

    Странно,
    — вы вроде из за лени сокращаете конструкцию, но в предлагаемом решении кода пишете больше, чем если бы этого не делали.
    — вы придумали новую лишнюю сущность, выполняемую на стороне клиента. Причем с одной целью — «однажды мне стало лень писать». Правильно я понимаю?


    1. GLaDosSystem
      12.11.2016 20:58

      1. GLaDosSystem
        12.11.2016 21:02
        -1

        Во вторых, если подключать больше JS-ов, меньше кода становится.


        1. KlimovDm
          13.11.2016 00:38
          +1

          Или вы даже не пытайтесь разобраться и понять то, что вам уже написали в комментариях… Или вся статья — стеб и провокация.


          1. GLaDosSystem
            13.11.2016 09:17
            -1

            @j hello
            <script src="hello.js"></script>
            

            Где меньше кода?


            1. fedorro
              13.11.2016 10:46

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


  1. fedorro
    11.11.2016 16:31
    +14

    Было:
    — Нормальная ссылка на скрипт, по которой можно было перейти прямо из исходника.
    Стало:
    — Конструкции, синтаксис которых, видимо, не понимают средства разработки HTML.
    — Всё равно ссылка на скрипт, который парсит всю страницу. (Замедление 1)
    — Остальные скрипты начинают грузиться после выполнения этого скрипта. (Замедление 2)
    — Ссылки на скрипты обычно сразу дают в формате прямой ссылки на загрузку, или вместе с тегом script (на страницах документаций к библиотекам), а теперь их необходимо подгонять под новый формат (а это гораздо больше телодвижений, чем написать тег script).
    — Ну и вообще добавление ссылок на скрипты это не такая частая операция чтобы экономить пару лишних нажатий на кнопки (с учётом автодополнений).


    1. fedorro
      11.11.2016 16:48
      +7

      Ну и и к тому же этот скрипт съест доменную часть всех почтовых адресов вида *@j*, *@c*, *@gj*, *@gc* — как показал тест.


    1. fedorro
      11.11.2016 17:17
      +9

      + Шикарный XSS, стоит только отправить сообщение, или что-то ещё вида: Привет!@gj xuser: xuser.github.io main/xss


  1. TheRaven
    11.11.2016 16:37
    +4

    Может это просто пятничный пост?


  1. aquamakc
    11.11.2016 16:58
    +1

    Может было бы проще написать простой скрипт на том-же питоне, который за вас формировал бы строчки типа:

    <script src="JS/example.js"></script>
    


  1. vintage
    11.11.2016 17:08
    +7

    То есть вы предлагаете вместо этого:


    <html>
            <head>
                <title>No Includor.js tests</title>
                <meta charset="utf-8">
            </head>
            <body>
    
                <script src="//malyutinegor.github.io/libs/includor/hello.js"></script>
    
            </body>
    </html>

    писать вот это:


    <html>
            <head>
                <title>Includor.js tests</title>
                <meta charset="utf-8">
            </head>
            <body>
                <!-- Includes -->
                @gj malyutinegor: malyutinegor.github.io master/libs/includor/hello
    
                <!-- Scripts -->
                <script src="http://raw.githubusercontent.com/malyutinegor/malyutinegor.github.io/master/libs/includor/includor.min.js"></script>
    
                <script>
                    I.start()
                </script>
            </body>
    </html>

    ?


    Как же мы раньше-то без этого жили...


    1. x893
      11.11.2016 18:07
      +9

      Вы жили в мучениях, но теперь за смешные 9.99 Кб Вы получаете СЧАСТЬЕ!


  1. k12th
    11.11.2016 18:35
    +2

    Посмотрите… ну хотя бы systemjs, что ли.


  1. Isopropil
    11.11.2016 19:54
    +2

    Эмм… А это точно 2016 год? Эпоха ES2016 и Webpack? Или автор только сегодня очнулся от длительного криосна? Если так — может быть кто-нибудь расскажет автору хотя бы про сниппеты/темплейты в IDE?


  1. MetaDone
    11.11.2016 19:56

    может я что-то не понял, но вот к примеру есть у меня gulp-задача, которая все скрипты/стили в 1 склеивает. Какой тогда смысл в этой библиотеке, если все что мне нужно будет окажется в нужном месте?


  1. jbubsk
    11.11.2016 21:39
    +2

    Афигенский фреймворк!


    1. GLaDosSystem
      12.11.2016 09:55

      Спасибо :)


  1. dom1n1k
    11.11.2016 22:51
    +3

    Минус за статью (описанная методика — бесполезное г-но) и плюс в карму (автор занятный индивид, интересно что он ещё придумает :)


    1. gearbox
      12.11.2016 00:08
      +1

      Поддержал. Автору — если стало обидно за бесполезное говно — сделайте то же самое, но кастомным тегом, половина претензий высказанных выше — снимется. Что то типа

      <script src="uberpackage_from_npm" v="^4.0.3" is="npmloader" />


      1. GLaDosSystem
        12.11.2016 09:20
        +1

        Я ничего не понял, но попробую :)


        1. gearbox
          12.11.2016 15:00

          это нормальное состояние джисера )


  1. solshark
    12.11.2016 20:39
    -1

    А можно из этого сделать плагин для jQuery?


    1. GLaDosSystem
      12.11.2016 20:55
      -2

      Я раньше пользовался jQuery, потом как-то перестал и все забыл уже. Можете напомнить и объяснить, что вы имеете в виду? :)


      1. solshark
        12.11.2016 21:01

        image


        1. GLaDosSystem
          12.11.2016 21:15
          -1

          А что он должен делать? ;)


          1. GLaDosSystem
            12.11.2016 21:19
            -1

            Конкретно делать :)


      1. FrozenInternet
        13.11.2016 07:46
        -1

        Парень или знатный троль или реально не вдупляет. Это так прикольно XD


        1. GLaDosSystem
          13.11.2016 07:46
          -1

          А что прикольного-то?


  1. Svet6os6laV6
    13.11.2016 07:43

    Странно, похоже автор пользуется блокнотом… ибо в разных ide давно используется автоподставка, в саблайме например есть плагин "emmet", установил и как бог с неба, все сам написал за тебя. Не вижу смысла как тут многие писали выше подключать какие-то библиотеки


    1. GLaDosSystem
      13.11.2016 07:43

      Я ноутпадом++ пользуюсь.


      1. GLaDosSystem
        13.11.2016 07:47
        -1

        Там эммет есть.


        1. GLaDosSystem
          13.11.2016 07:48
          -1

          Прикол в том, что кто-то, может, и не захочет его устанавливать.


          1. Svet6os6laV6
            13.11.2016 10:00
            +1

            Ну если выбирать только 1 подключение на все свои дальнейшие проекты то лучше использовать emmet а приведенную выше библиотеку придется подключать постоянно.Глупо как мне кажется.Ведь все уже написано давным давно за нас, нужно просто изучить и правильно использовать.Автор молодец, заморочился и применил свои навыки, но как мне кажется этот продукт не будет востребован :D


            1. GLaDosSystem
              15.11.2016 18:08

              ОК, пойду писать что-нибудь полезное :)


  1. yellow79
    15.11.2016 18:06

    Мне кажется куда проще сделать вот так:

    function addScript(arr, target){
    	for(var i in arr) {
    		var s = document.createElement("script");
    		s.type = "text/javascript";
    		s.src = arr[i];
    		target.appendChild(s);
    	}
    }
    addScript(["JS/example-1.js","JS/example-2.js","JS/example-3.js"], document.body);
    


    1. GLaDosSystem
      15.11.2016 18:07

      Там есть такие функции :)

      I.JS(path)
      Позволяет вам добавить новый скрипт в HTML-код.
      path — путь до скрипта с расширением.
      I.CSS(path)
      Позволяет вам добавить новую CSS-таблицу в HTML-код.
      path — путь до CSS-таблицы с расширением.