Это копия, сохраненная 9 ноября 2014 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Ньюфагам:
1. Что это за язык такой? - Объектно ориентированный язык, наиболее широкое применение находит в браузерах как язык сценариев для придания интерактивности веб-страницам.
2. Ааа, так это хуйня чтоб типа текст покрасить при клике, или попап вызвать? - Это только малая часть того, что может язык. Сейчас, на JS можно делать игры, с 3д(three.js) графикой или 2д(phaser.js), можно делать игры и приложения для телефонов(phonegap, etc), можно делать десктоп приложения(node-webkit)
3. Ну ясно, а че еще можно? - А еще можно использовать на сервере, причем очень даже успешно. А все благодоря платформе node.js, и v8, который встроен во все хромоподобное.
4. Я щас ниче не понял, повтори. - Проще говоря, если ты не делаешь огромный интернет магазин, или хай лоад проект, то забудь о пхп или руби, используй javascript и node.js (базы данных прилогаются, mongoDB и sql-и тоже)
5. А че еще прикольного можно сделать - А еще есть MVC фреймворки, angular, backbone, ember, knockout и многое другое.
6. Нах оно надо? - Для создания web application, логики на клиент-сайд.
7. Мда столько хуйни всякой... А можно просто jquery учить, я слыхал щас все ее используют сайты - Не стоит, можешь начать писать на жыквери, когда будешь асом в других фреймворках, и, в частности самого нативного языка, но не раньше, не порть себе мозги
8. Ну все все бля, че как учить то? - Дальше я приложу список материалов для изучения
Учим JS:
Книги:
David Flanagan - "JavaScript: Подробное руководство" - маст хев, книга, которую будешь читать не раз. (Читать 6-е издание).
Дуглас Крокфорд "JavaScript: сильные стороны" - просто хорошая книга.
Стефанов С. - "JavaScript. Шаблоны"
Онлайн сообщества:
http://learn.javascript.ru/ - оно одно, единственное. Начинать учить язык советую отсюда, потом переходить уже к книгам.
Онлайн курсы:
Как же можно учить язык, только читая книжонки? Нужна практика, и только так изучаемое усваивается, не иначе.
CodeSchool - http://go.codeschool.com/KoeYkQ (не ругать за рефку, она прибавляет +2 дня бесплатного пользования)
Отличный ресурс для изучения языка, очень много курсов по всем передовым технологиям.
CodeAcademy - http://www.codecademy.com/
Уже не такой сильный, но все еще интересный проект, так же маст хев для набивания скилла.
Выучил основы, написал свою пузырьковую сортировку и змейку? Не знаешь как двигаться дальше?
Почитай теперь это - https://shamansir.github.io/JavaScript-Garden/
А потом? Я и так уже гений!!!
Выбери себе направление, может, ты хочешь игори делать, тогда вперед на гитхаб, и ищи phaser, pixi и другое, выбор велик.
Хочешь на сервер сайд, на самой хипстерской технологии? Копай в сторону node, express, socket io.
Хочешь писать MVC логику? Angular, backbone, да множество их.
В общем, Официальный JavaScript тред #2 объявляю открытым!
Я считаю, что в ближайшие годы произойдёт полный отказ от js в вебе. Почему? - Потому что.
Ближайшие годы это 2017 год.
И кто встанет на замену? А кто весь веб будет переписывать с js? Учитывая темп развития, и порог охвата технологий, js захватит веб, точнее, он его уже давно захватил, а с сильными фреймворками и платформами, лишь укрепит свою позицию лет на 20 вперед.
JS - лучшее, что случилось с вебом за последнее десятилетие. PHP - это вообще недоразумение, ошибочно принятое за средство разработки, подлежащее утилизации в ближайшем будущем. Ноудискач.
Джаваскрипт - урод от мира языков программирования, делали его впопыхах, поэтому уже своим синтаксисом смахивает он на чудовище Франкенштейна, сшитого из кусков всякого говна. Это факт. Может, и лучшей альтернативы нет, но это не значит, что он не говно.
Синтаксически JS очень традиционный и выдержанный сиподобный язык. В этом плане я бы назвал "Франкенштейном", например, Nemerle. А тут-то что? Классическая сипараша без примесей.
JS как раз и может стать системным или серверным языком, но из языка разметки он уйдёт 100%, так как относительно сложен для своих целей.
Вместо него придёт какой-то визуальный язык. Либо просто CSS и HTML станут языками программирования с переменными и базовыми вещами, которые нужны в сайтостроении.
> Объектно ориентированный язык
Мультипарадигма же.
> Проще говоря, если ты не делаешь огромный интернет магазин, или хай лоад проект, то забудь о пхп или руби
Если это не хайлоад проект, то от раби, питона и пихопе ничего плохого не будет.
> А че еще прикольного можно сделать - А еще есть MVC фреймворки, angular, backbone, ember, knockout
Это инструментарий, а не "че еще прикольного можно сделать". Прикольное - это всякие там игрули, "я написал на js хуйню в 30 строчек" и т.п..
> Вместо него придёт какой-то визуальный язык. Либо просто CSS и HTML станут языками программирования с переменными и базовыми вещами, которые нужны в сайтостроении.
Не так-то просто убрать тьюринг-полноту там, где ее уже освоили.
Есть одна хтмл страица для движка Razor(асп).
<div onclick="MovePages(0)">
@{
int index = 0;
foreach (var page in Model)
{
<div class="shard0-Page" data-id="@page.Id" data-index="@index" >
<p>@page.Condition</p>
<p>@page.Decision</p>
</div>
index++;
}
}
<script>window.onload = MovePages(0);</script>
</div>
И, скрипт небольшой, с джейкверей.
function MovePage(index, page) {
alert($(page).prop("data-index"));
}
function MovePages(index) {
CurrentPage = index;
$(".shard0-Page").each(
function (i, page) {
MovePage(CurrentPage, page);
});
}
Цимес в том, что свойство дата-айди - андефинед, в то время .как свойство класс исправно получается. ЧЯДНТ?
Есть одна хтмл страица для движка Razor(асп).
<div onclick="MovePages(0)">
@{
int index = 0;
foreach (var page in Model)
{
<div class="shard0-Page" data-id="@page.Id" data-index="@index" >
<p>@page.Condition</p>
<p>@page.Decision</p>
</div>
index++;
}
}
<script>window.onload = MovePages(0);</script>
</div>
И, скрипт небольшой, с джейкверей.
function MovePage(index, page) {
alert($(page).prop("data-index"));
}
function MovePages(index) {
CurrentPage = index;
$(".shard0-Page").each(
function (i, page) {
MovePage(CurrentPage, page);
});
}
Цимес в том, что свойство дата-айди - андефинед, в то время .как свойство класс исправно получается. ЧЯДНТ?
Сидел 10 сек тупил чтоб понять че еще за "андефинед".
А где-ты в джаваскрипте используешь data-id? Вижу только data-index.
Че это он вдруг объектно-ориентированный, когда он всегда прототипно-ориентированным был? Там классов как таковых нет.
а как механизм наследования влияет на обьектно-ориентированность, ебанашка? иди спи, а то школу проспишь.
Я ж вроде опустил тему про наследование и сразу сказал, что там нет классов. Нет классов - нет их экземпляров. Нельзя описать сущность и создавать объекты на ее основе. Зато можно собирать объект из воздуха (прототип), который потом можно будет склонировать и изменить по необходимости.
Я ж вроде опустил тему про разум и сразу сказал, что там нет мозгов. Нет мозгов - нет их деятельности. Нельзя подумать мысль и кипятить чайник на ее основе. Зато можно собирать бред из воздуха (прототип), который потом можно будет склонировать и изменить по необходимости.
ну коли так, тогда ладно.
Chrome dev tools, очевидно же
var value = field.value;
$.post("request.php",
{
request: "participantsWithText",
name: value
},
...
);
Что не так? Как value подставить?
запихни это внутрь .ready.
вот это ты вовремя с тредом в общем подскажи анончик я заебался уже долбаный яваскрипт не дает мне нормально сохранять файлы пакет system.io просто ужасно хуй пойми какой поделись примером кода с новичком пожалуйста очень хочу начать писать под веб а знакомый прогромист посоветовал яваскрипт
Джаваскриптаны, в прошлом треде какой-то олдфаг кидал ссылку на охуенную книгу на английском, не могли бы вы напомнить?
Не умеешь - съеби. Заебало кукареканье ваше.
Колбеки можно преобразовать в корутины на генераторах, тут кто то вбрасывал ссылку. Рли ананасы, научитесь писать асинхронный код, пользуйтесь библиотеками и не будет батхерта от коллбеков.
Плюсы в том что это язык чуть сложнее лиспа, но в отличие от лиспа он везде применяется и востребован. Есть конечно недостатки но они правятся и к ES7 мы получим идеальный скриптовый язык для всего.
>Питон вон тоже простой, и в нем нет кучи ебанутостей
В питоне больше ебанутостей чем в твоей мамке, анончик.
Как научиться писать асинхронный код? Это все на промисах писать?
мимо-написал-на-js-100-строк
Изучи например в node стандартной библиотеке EventEmitter, подумай как применять событийную модель как основу приложения. Потом посмотри как устроен connect и как он строит цепочку обработчиков.
Выбери себе библиотеку по вкусу например https://github.com/caolan/async и хуярь с ней. Потом можешь приступать к deferred/promise/future вот этой штуке.
Вообще конечно я давно этим всем не занимался, может уже что-то новое появилось.
Как лучше и правильнее проверять аргумент на undefined?
function a(c) {
var b = typeof(c) == 'undefined' ? 0 : c;
//var b = arguments.length ? arguments[0] : 0;
return b;
}
слишком сильное колдунство
Если тебе вот прям именно на undefined надо, то можно еще вот так:
[code]
function(undefined) {
function(c) {
if(c===undefinded){
//govnocode
}
}
}()
[/code]
В этом случае мы еще и защищаемся от переопределения undefined каким-нибудь мудаком в глобальном контексте.
Если же тебе нужно просто проверить, что аргумент был\не был указан - в большинтсве случаев хватит просто if(c), не подойдет, правда, для строк и чисел.
Можно еще void 0 использовать вместо undefined.
Посоветуйте игру по проще для быдлятни, которую можно написать для обучени\портфолио? Блэкджек уже сделал. Что еще можно сделать?
бутылочку
[code]
beforeEach(function() {
browser.get('app/index.html');
});
[/code]
взято из доков к ангуляру, что делает
browser.get() ? https://docs.angularjs.org/tutorial/step_03
Алсо, похоже тут про твой браузер написано. Что и с чем едят
http://ramonvictor.github.io/protractor/slides/
Если вызываем функцию Quo с префиксом new, то:
1. Создается новый объект, __proto__ которого присваивается Quo.prototype
2. Для кода этой функции this присваивается объект, созданный в 1-ом пункте
Все правильно понял?
Я так понял, некоторые движки не дают доступа к __proto__ по проперти __proto__, но на деле оно все равно там есть, надо же его как-то называть?
Ну и как нормальные люди этот __proto__ называют?
Если они называют его прототипом, то не создается ли конфуз с тем, как называть свойство под именем 'prototype'?
его называют свойство __proto__, смысл в том что(кроме лиса) не даст тебе никто доступа. Потому она как бы есть, но тебе знать его не нада
http://pastebin.com/jsKd0xqh
Когда вызываю getPosts(), получаю
TypeError: Cannot read property 'map' of undefined
нет свойства map у posts. Давай перед этим поставь console.log(posts) и сам увидишь в чем проблема
[Object, Object, ..., Object]
Вроде выглядит как массив. Но typeof posts возвращает "object".
ты alert что ль использовал? он гавно, используй console.log() и открой консоль, он подробно распишет весь объект, хорош firebug в лисе если что
Я в хроме тестил. В огнелисе почему-то другая ошибка: TypeError: post.files is undefined
Хотя я вставил
console.log(post);
var media = post.files.map(function(file) {
\treturn file.md5;
});
> Object { banned: 0, closed: 0, comment: "<strong>Официальный JavaScript тред ....... date: "08/09/14 Пнд 15:16:23", email: "", files: Array[1], .. }.
А, все, я понял. У некоторых постов нет приклепленных пикч и, соотвтественно, поля files. Все. Все.
пека унижает ретарда ITT
Есть объект
[code]
$scope.A = [
{
name: 'text',
link: 'http://example.com',
title: 'page',
image: '../img/some/image.png'
}
[/code]
Пытаюсь вывести картинку через ng-repeat и ng-src
[code]
div class="col-md-6" ng-repeat="values in A | limitTo: 4">
\t\t\t\t<img ng-src="{values.image}}">
[/code]
Но постоянно пишет что не правильно указан путь к картинке, 404, и все такое, еще после шаманства выбило что-то в духе its html/plain , короче не рендерит как картинку, но я даже не помню как путь указать.
Помогите пожалуйста.
Бже, я могу поклястя, что и такой вариант пробовал, да как только я не прописывал путь! Но сейчас сработало! Спасибо анончик!
Хотел просто глянуть как он переделал проект kitchensink.
Он его переписал на один фреймворк. Угадайте какой?
Подсказка - самый писк моды в среде жопоруких ебанатов
Общее правило такое: если у тебя в контроллере есть обвешивание событиями каких-то элементов, значит, ты всё делаешь неправильно. Все эти гриды, скролбары, дейтпикеры и т.д. надо оборачивать директивами и взаимодействовать с ними исключительно через параметры в шаблоне, которые будут подключать их к функциям и данным, которые уже лежат в контроллере.
Фабрики и сервисы почитай здесь: http://stackoverflow.com/q/15666048/1203558
$scope.play = 'hello';
$http.get('vendor/games.json').success(function(data, status, headers, config) {
$scope.A = data;
});'
'<div class="col-md-6" ng-repeat="values in A | limitTo: 4">
<h3>{{values.name}}</h3>
<img ng-src="{{values.img}}">'
И опять что-то не так, >Cannot call method 'get' of undefined
Но почему? Должна же вывестись инфа из json (смотрю не статично, а с локалхоста)
Объясни пожалуйста, ангуляр-кун!
> ['$scope', '$http', function($scope, $filter, $http)
Ебать дибил, попробуй
> ['$scope', '$http', function($scope, $http)
>'$scope', '$http', function($scope, $filter, $http)
'$scope', '$http', function($scope, $http)
Ты бы сам голову включал что ли
Рут скоуп с абсолютной ссылкой на сервис или base тэг, но обязательно убери нахуй точки из пути еблан
> var nums = ["1", "2", "3"]
< undefined
> nums.map(parseInt)
< [1, NaN, NaN]
Потому что в колбэк к мапу идет три аргумента.
На каждой итерации получается следующее
[code]
> var n = ['1', '2', '3'];
undefined
> parseInt(n[0], 0, n)
1
> parseInt(n[1], 1, n)
NaN
> parseInt(n[2], 2, n)
NaN
[/code]
Юзаю async.js - код всё равно похож на говно. Что делать, чтобы не было такой хуеты.
не юзать async.js.
Для вложенного роутинга.
Читай Кантора, и книги из оп поста, потом документацию backbone.
По бэкбоун есть хорошая книжка Addy Osmani на гитхабе, такие дела.
задачи чтбы начать изучать JS на практике и максимально быстро начать работать с логикой веб приложений на стороне клиента
Даже не знаю, что сказать. Слишком обобщенный вопрос. Берёшь любую книжку по жс и смотришь, есть ли там задачки.
443
Сасаны, что скажете про node.js? Это совсем зашквар? Перспективна ли эта херня, можно ли зарабатывать на JS?
Хочу, в качестве теста, сделать себе сервер с быстрыми закладками и интересной инфой из сети, ссылки, смищныйе картике, видео и т.д. чтобы все быстро сортировалось и искалось, чтобы можно было комменты ко все хуйне добавлять и т.д.
Ну и вообще душа к JS лежит, не нравится мне python, скобочек нету((({{
>сделать себе сервер с быстрыми закладками и интересной инфой из сети, ссылки, смищныйе картике, видео
тебе в пыхотред видимо
дерьмо уровня хачкеля, лучше пхп
Пожалуй раскрою пункт 4.
4.1) Ставишь 20 баксов в час. Отправляешь 3 заявки. Никто не берет тебя на работу.
4.2) Ставишь 10 баксов в час. Отправляешь 3 заявки. Никто не берет тебя на работу.
4.3) Отправляешь все заявки на неделю вперед. Никто не берет тебя на работу.
4.4) Через три дня отписывается индус, нанимает тебя на работу за 13.5 баксов чистыми.
4.5) Выполняешь работу.
4.6) Ждешь неделю, пока индус заплатит.
4.7) Малаца, первый этап пройден, впереди взятие 100 часов.
4.8) GOTO 4.3
var csControllers = angular.module('csControllers', []);
csControllers.controller('characterCtrl', function($scope, LocalStorageService){
$scope.character = {};
$scope.character.attributes = {};
function Attribute(name, index){
this.name = name;
this.basevalue = 10;
this.bonus = 0;
this.value = this.basevalue + this.bonus;
this.mod = parseInt((this.value - 10)/2);
this.index = index;
};
$scope.character.attributes.str = new Attribute("str", 1);
});
<tr ng-repeat="attribute in character.attributes">
<td>{{attribute.name | uppercase}}
<td>{{attribute.value}}
<td>{{attribute.mod}}
<td>{{attribute.basevalue}}
<td><input type="number" ng-model="attribute.bonus">
</tr>
{{character.attributes.str.bonus}}
[/code]
При изменении инпута изменяется только последняя строчка, та, которая не в таблице. ЧЯДНТ?
Инб4 используешь google-driven development и не читаешь доки.
var csControllers = angular.module('csControllers', []);
csControllers.controller('characterCtrl', function($scope, LocalStorageService){
$scope.character = {};
$scope.character.attributes = {};
function Attribute(name, index){
this.name = name;
this.basevalue = 10;
this.bonus = 0;
this.value = this.basevalue + this.bonus;
this.mod = parseInt((this.value - 10)/2);
this.index = index;
};
$scope.character.attributes.str = new Attribute("str", 1);
});
<tr ng-repeat="attribute in character.attributes">
<td>{{attribute.name | uppercase}}
<td>{{attribute.value}}
<td>{{attribute.mod}}
<td>{{attribute.basevalue}}
<td><input type="number" ng-model="attribute.bonus">
</tr>
{{character.attributes.str.bonus}}
[/code]
При изменении инпута изменяется только последняя строчка, та, которая не в таблице. ЧЯДНТ?
Инб4 используешь google-driven development и не читаешь доки.
Мне бы как-нибудь сделать так, чтобы значения свойства (value) объекта (str) изменялись при изменении другого свойства (bonus). Казалось бы, character в $scope, а str в character, и должно работать, авотхуй.
А вот и не должно. Ебашь $scope.$watch с функцией первым параметром.
туше
Не могу ничего найти.
Хуй знает, я когда-то, не зная ангуляра, отправил резюме, за вечер что-то там почитал, сделал тестовое, и устроился на работу. JS-обезьянки сейчас очень востребованы что в Рашке, что в Украшке, что вообще в мире. Студентов учат в основном только Pascal, С, С++, C#, Delphi, Жабе, иногда PHP, ну и, если повезёт, лиспам и прологам. Самоучек всегда мало, и потому спрос на JS кодеров намного превышает предложение и найти работу гораздо проще.
Ангуляр не нужен, самый тормозной фреймворк.
Ну посоны.
New, angular.copy и angular.extend не копируют watch'и. Есть в ангуляре какой-нибудь способ реализации классов, который это делает? Или ебашить все что шевелится $scope.$watch - это штатный режим работы?
javascript девелоперу обьязательно знать хтмл и сисс в совершенстве? То есть уметь верстать макеты любой сложности. Месяц задрачивал эти языки разметки, сверстал пару макетов, но все равно еще многого не понимаю в верстке. Заебало с этой хуйней возится, выравнивать эти кнопочки, пиксел-перфект - вся хуйня.
Хочу учить нормальный ЯП, но если посмотреть на вакансии джава-скрипт/фронтенд девелопер то везде требуют хорошее знание css.
Блять, ты заебал, если у тебя есть поле, которое не предназначено для ручного мутирования, и которое зависит от другого поля, значит, у тебя есть поле, вместо которого должен быть аксессор. Делай так и не еби мозги: http://pastebin.com/AXJxJ0Rx
Если же значение должно быть вручную модифицируемым, тогда если при его изменениях надо чтобы и зависимые поля как-то осмысленно обновлялись, значит, ты пишешь астральную поебень и пока ты не в состоянии выдумывать хитрые реактивные метапаттерны на ходу, тебе будет несладко, если же пересчитывать зависимые не надо, и прост хочется, чтобы можно было вручную на ходу "затереть" зависимость и установить жёсткое значение, можно сделать что-то такое: http://pastebin.com/Nbkn0Sxe Пока value и mod будут неустановлены вручную, они будут высчитываться по формуле, но можно переопределить и тогда аксесор будет возвращать первый дизьюнкт.
Отошёл от темы, мог поставить в спойлер, но в разметке я рак.
Итак, вопрос, я знаю синтаксис Си, и помню, что для вывода на монитор значение перемонной нужно было написать следующее (ну и конечно, перед этим обьявить переменную, но не будем капитанить-очевиднить):
int dlina;
dlina = 20;
printf ("my pinus is - %d метров", dlina);
Ну дальше выпоняли, хочу сделать подобное в Яваскрипт, чё писать-то? Гугол пишет, что забанен.
Спасибо.
Зачем ты у нас спрашиваешь, мы же не размещаем эти вакансии? Что там написано, то и учи, чтобы тебя взяли.
я думал тебе вывести на экран надо, а пик твой не смотрел. в доках нет чтоли ничего?
Толсто
Посоны, которые пользуются современными клиентскими JS фреймворкам, объясните, как вы решаете проблему SEO, еби его мать?
Т.е. я имею ввиду, SEO'шники на проекте ебут мозги по поводу того, что должна отдаваться статика для поисковиков, а на JS уже рендерить для пользователя. В итоге приходится писать шаблоны по два раза и городить невероятные костыли. Как вы разбираетесь с этим?
Проиграл. Слева пишется строчка на jQuery, справа 10 строчек на ванильке. Естественно, никакой долбоеб не будет хуячить весь код AJAX запроса, он скроет его за функцией. Другие вещи он тоже скроет за функциями. И начнет получаться обратно ебучий jQuery, только свой и бегающий на костылях с даунской улыбкой. Заебись перспектива, че.
jQuery, если что, в работе не использую.
Двачую этого господина, а то получается подобное говно:
[code]
function(selector, parrent) {
\t\tvar selector = selector || "audio";
\t\tvar parrent = parrent || document;
\t\tif(selector[0] == ".") {
\t\t\tvar element = parrent.getElementsByClassName(selector.slice(1));
\t\t} else if( selector[0] == "#") {
\t\t\tvar element = parrent.getElementById(selector.slice(1));
\t\t} else {
\t\t\tvar element = parrent.getElementsByTagName(selector);
\t\t}
\t\treturn element;
\t}
[/code]
СУКА МАКАКА!!!! Опять сломал ББ коды
Вангую, сейчас прибегут поехавшие и начнут говорить тебе, что есть метод querySelectorAll, абсолютно не поняв, к чему ты привёл этот пример.
>если у тебя есть поле, которое не предназначено для ручного мутирования, и которое зависит от другого поля, значит, у тебя есть поле, вместо которого должен быть аксессор
Сдается мне, я таки хуйню изобрел, и character должен быть объектом без методов, потому что его предполагается хранить между сессиями, а вся логика должна быть в функции, которая вызывается watch'ем character'а.
Тащемта, все ваши джиквери, селекторы и т. д. - это говно мамонта. Будущее за виртуальным DOMом. Такие дела.
Ты про ебучий параметр, с которым он запрашивает отрендеренную копию страницы?
Долбоёб, виртуальный дом не отберёт у тебя возможность положить один элемент в другой и следующую из этого необходимость иметь языки для описания иерархических запросов вглубь таких структур.
Я не использую jQuery уже года два, наркоман.
Еще раз, нормально же прошу: переведи то, что ты сказал, на человеческий.
Под "виртуальный DOM" можно с натяжкой и пизду твоей мамаши подогнать.
Ну это вполне определённый концепт в js-мирке: https://github.com/Matt-Esch/virtual-dom . Другое дело, что это никак не влияет на нужность/применимость css селекторов.
чушок продолжает оправдываться на ровном месте и бугуртить
Квериселекторолл и подобные тоже останутся, иначе как ты будешь доступаться к глубинам своего virtual dom? Просто их придётся навелосипедить с нуля (сложная задача) для такого формата dom, ведь стандартные реюзнуть не получится.
> иначе как ты будешь доступаться к глубинам своего virtual dom?
Вернее, лучше не "своего" а "чужого". Со своим-то типа как заранее можно предусмотреть, что там понадобится (на самом деле нет), а какую-нибудь библиотеку с UI элементом, которая его представляет таким вот dom'ом, и автор которой не догадался предусмотреть кастомизируемость вон того div'а в глубине. Насколько я понял, эту проблему во всяких react'ах не решали.
Останутся, остануться. Но использовать их особой нужды не будет. Там же прямо в readme.md есть пример использования - не знаю как в этой либе, но в идеальном варианте достаточно сохранить ссылку на то, что возвращает функция h.
Ну понятно, что ссылку надо хранить и отдавать во внешнем интерфейсе библиотеки - иначе и селектор не к чему будет применять. А вот, кстати, и они: https://github.com/parshap/vtree-select
Это решено даже в той простой либе, которую скинул - проперти передаются через простой Object, а потом по нему проходятся for in'ом. https://github.com/Matt-Esch/vtree/blob/master/vnode.js
Ну и что? Мало ли какие репозитории есть на гитхабе. Даже по примеру видно, что этот селект там как собаке пятая нога, просто кто-то привык к такому подходу
Это не "подход", а повсеместная необходимость. Вот берёшь ты качаешь ЧУЖИЕ либы с контролами, а увязывая вместе, надо оттуда кусок выпилить, там повесить колбек, а там-то стиль добавить. И все они, во внешнем api, внезапно, не позволяют конкретно нужных тебе кастомизаций. Это не исключительная ситуация, а стандартная.
>повсеместная необходимость
Нет. Причин почему нельзя передать в функцию, создающую виртуальный DOM-элемент что-то вроде { manya_callback: function () { return 'manya'; }} я не вижу.
Можно, но для этого тебе придётся на каждый такой чих править исходники чужой библиотеки.
+ кстати подобный fp-style подход лично для меня выглядит чище и понятнее, чем необходимость в разных местах вызывать функции меняющие что-то в глобальном контексте.
Допустим, постороняя библиотека внутри реализует vtree из https://github.com/parshap/vtree-select, а её api состоит из getVTree и onStrongClick. Автор подумал, что никому не понадобится onSpanClick. Задача: повесить событие onSpanClick, не трогая исходники библиотеки.
Это выглядит как сочная и абсолютно бессмысленная шизофазия. Ты можешь написать, что конкретно надо сделать с getVTree(), чтобы во внутреннем span на клик отработал колбек? Куда, как, и какие "проперти" передаются "через простой Object", неясно.
> hooks[propName] = property 32 строчка можно написать hooks[propName] = property.toString()
И причём здесь, блять, ".toString()"? Вообще охуеть.
>>388183
Я не знаю - ты зелень или просто школьник, поэтому вот пример, как передать Object, пройтись по его пропертям, превратив их в строки и создать из этого элементы: http://jsfiddle.net/fqf69xth/1/ Если что, это не пример виртуального DOM'a, но интерфейс там будет аналогичный.
Давайте объясняйте как мне из этого вашего js работать с браузерными плагинами/расширениями. Предположим у меня есть в браузере установленный плагин, который обычно включается прямо в html тегом <object>. Дальше подхватываешь его js'ом по id и дергаешь его апи.
Но допустим мне нужно чтобы он не включался в страницу, а висел фоновым процессом, чтоб не перезапускался при рефреше страницы, более того я хочу к нему доступ с любой своей вкладки. Как сделать? Через шаред треды не работает, в них можно передавать только js объекты, текст и блобы. Есть в js какое-то апи для работы с плагинами? Или хотя бы сериализатор, который позволит передать объект в тред и там десериализовать? То что я нагуглил - 3,5 функции возвращающие информацию о том какие плагины установлены в их описание. Если перевести плагин в блоб, то в треде он не собирается обратно, т.к. в js нет восстановления из блоба или хотя бы его экзекьюта. На работе загонял это тимлиду фронтендщиков, он долго расспрашивал, не понимал о чем я, потом когда понял, долго думал и в результате не родил ничего. Неужели этот js такая параша, что в нем нельзя разрешить такую простую задачку?
Вангую, что для разных браузеров по разному.
Блять, пиздец, ты реально поехавший чтоли? Какое это нахуй имеет отношение к делу? Причём тут строки, причём тут создание элементов? Ты забыл, о чём мы говорили?
БАБАХ
Чуть более обобщенный вариант с передачей эвента в функцию-обработчик
http://jsfiddle.net/fqf69xth/3/
Буду реализовывать это на jQuery. Не прошу писать за меня код, направь в правильном направлении, я так понимаю нужно смотреть в сторону .queue() , .clearQueue() ?
Ты бы лучше попытался ответить на >>388168, вряд ли тут кому-то интересно, как ты умеешь писать циклы и перебирать поля объектов на жс. Я попробую для тебя переформулировать. Вот код библиотеки: http://pastebin.com/VhAaKS4h . Всё, что ты можешь с ней делать - вызывать yobaliba.mkVTree(). Тебе нужно повесить событие onHover на span.
Ну бамп же
Через animate(...).animate(...) делаешь все телодвижения, если нужно вызываешь .finish()
animate + stop
Я хочу изучить более тяжелый язык программирования в частности JAVA, начал его изучать, но в связи с ситуацией(да, я из новороссии, и нет, мне глубоко похуй на политику), решил сначала выучить язык с более низким порогом вхождения, что бы устроиться на удаленку или фрилансить(а в свободное время доучить JAVA, хуевая работа пока есть), выбрал конечно же JavaScript(с HTML 5 and CSS 3 знаком примерно на том же уровне), прошел курс на w3, в принципе особых сложностей не увидел, но теперь у меня еще больше вопросов чем ответов и на вид простой JavaScript открылся многими гранями и изучу его не намного быстрее.
Так вот анон подскажи, что ты думаешь, стоит мне добивать ЯваСкрипт или не ебать мозги и учить то, что мне больше нравиться(Ява)? Так как по скорости вхождения я особо не выиграю, а просто потрачу время в бесплодных поисках фриланса за копейки или я не прав и осталось совсем не много и я смогу заработать копейку?
Я продублировал вопрос в тред по яве, ЯваСкрипту и общий тред.
Можно ли активировать две флэш-кнопки одним кликом? Под активировать я имею в виду запустить соответствующее каждой из них действие.
Я использую Zero Clipboard и Downloadify в юзерскрипте для копирования в буфер и вызова диалога сохранения. Не хочу делать две кнопки и кликать два раза, хочу все и сразу.
Где-то слышал, что событие клика может проходить сквозь несколько слоев и активировать нижележащие, но у меня ничего не получилось при расположении кнопок друг на друге, только верхняя работает.
И да, имеется в виду реальный клик мышью, яваскриптовский click() не прокатывает с флэшем.
Это тот же джаваскрипт, просто расширенный, я правильно понимаю?
Есть смысл забить либо на ноджс, либо на жабу. Если ты здоровый, умный, и перспективный молодой человек, ориентирован на результат, если тебе приносят удовольствие реальные вещи, а не абстрактное архитектурное дрочилово, рекомендую выбирать ноду.
Да хуй её знает, сам-то я любитель абстрактного дрочева, а скрипты ваши в рот ебал.
C веба и пришел, никто не знает или не отвечает. Сказали бы хоть "нет, принципиально невозможно", так нет, отмалчиваются.
google -> node.js in action читай до главы про express
Имеется овер900 строк контента без айди и классов со спанами, к которым привязан только онклик с функцией. Всё на пикче.
ессно с массивом [0] он будет возвращать спан первой строки. Внимание, вопрос: какой массив позволит в данном случае возвращать спан той строки, на которую кликают в данный момент? Я сломался.
И еще вопрос. Есть некая сущность, скажем, todo-лист. У него есть набор item-ов. По определенным причинам я не хотел бы создавать item-ы напрямую (т.е., нужно не List.add(new Item()), а var item = List.createItem()). Это нормально для JS, учитывая сложности с созданием приватного конструктора (замыкания на замыканиях и замыканиями погоняют)? Что можно почитать на эту тему? Сам язык знаю.
мимо-заставили-писать-на-js-кун
>Поясните. Вот есть объект, который регистрирует event listener. Как из callback получить this объекта?
Ты о чем, чумачечьший? У тебя this в колбэке и так указывает на объект, к которому обработчик был привязан.
Парни собираюсь делать небольшой веб проект.
Выбрал node.js+express для бэкенда, react для фронтенда.
Все правильно сделал? Есть еще какие-то restify, koa и так далее но насколько я понял, они еще недостаточно mature.
this.name = name;
this.basevalue = 10;
this.bonus = 0;
this.value = 0;
this.index = index;
};
Attribute.prototype.update = function(){
this.value = this.basevalue + this.bonus;
this.mod = parseInt((this.value - 10)/2);
console.log(this.name + " " + this.value + " " + this.mod);
};
<td><input type="number" ng-model="attribute.bonus" ng-change="attribute.update()">
Работает до тех пор, пока не загружается сейв.
//save character
$scope.saveCharacter = function(){
LocalStorageService.save('character', $scope.character);
};
//load character
$scope.loadCharacter = function(){
$scope.character = LocalStorageService.load('character');
console.log($scope.character);
};
csServices.service('LocalStorageService', ['$rootScope', function(){
var service = {
load: function(key, value){
return angular.fromJson(localStorage[key]);
},
save: function(key, value){
localStorage[key] = angular.toJson(value);
}
}
return service;
}]);
Update раньше был в самом "классе", а вместо ангулярных функций были JSON.stringify и JSON.parse, результат немного предсказуем.
Внимание, вопрос! Куда мне запихнуть update, чтобы жсон его не ломал? Инб4 в анус.
this.name = name;
this.basevalue = 10;
this.bonus = 0;
this.value = 0;
this.index = index;
};
Attribute.prototype.update = function(){
this.value = this.basevalue + this.bonus;
this.mod = parseInt((this.value - 10)/2);
console.log(this.name + " " + this.value + " " + this.mod);
};
<td><input type="number" ng-model="attribute.bonus" ng-change="attribute.update()">
Работает до тех пор, пока не загружается сейв.
//save character
$scope.saveCharacter = function(){
LocalStorageService.save('character', $scope.character);
};
//load character
$scope.loadCharacter = function(){
$scope.character = LocalStorageService.load('character');
console.log($scope.character);
};
csServices.service('LocalStorageService', ['$rootScope', function(){
var service = {
load: function(key, value){
return angular.fromJson(localStorage[key]);
},
save: function(key, value){
localStorage[key] = angular.toJson(value);
}
}
return service;
}]);
Update раньше был в самом "классе", а вместо ангулярных функций были JSON.stringify и JSON.parse, результат немного предсказуем.
Внимание, вопрос! Куда мне запихнуть update, чтобы жсон его не ломал? Инб4 в анус.
Или мне перестать читать кукарекающих про производительность и использовать watch?
Представь этот проект как некая доска объявлений с расширенными возможностями (комменты, рейты, каталог с кучей фильтраций и тд).
Пилим немаленький проект, причем пилим без изъебств с оптимизацией. Никаких проблем с производительнстью не наблюдаем.
Спасибо. Тот пост удалил бы, если бы не кровавый Абу, функция нормально работает в $scope.
Мне не нужна DOM-нода, к которой я привязал обработчик, мне нужен мой объект, из метода которого я регистрировал обработчик.
извиняй, я в силу своей нубости, не смог оъяснить внятно, походу.
вот кусок кода, который подходит для примера:
пикрелейтед.пнг
цель: сделать так, чтобы функция работала на той строке, на которую собственно и кликают. Сейчас же (ну например в данном случае выделение) выделение пройдёт на 1й строке в range span'а. Проблема в том, что у строк нет уникального айди или класса. getElementsByTagName('span')[0]; - привязывает массив к 1й строке.
Была мысль как-то иначе сделать, чтоб избежать массивов типа:
\tfunction getTagName(gtn) {
\t alert(gtn);
\t}
и в строку вписать getTagName(this.tagName);
но не хватило мозгов, как это объеденить всё.
Ты кликаешь на спан и хочешь параграф?
https://developer.mozilla.org/en/docs/Web/API/Node.parentNode
http://api.jquery.com/parent/
>Ты кликаешь на спан и хочешь параграф?
контент самого спана и нужно
jquery не хотелось бы
<http://api.jquery.com/parent/
щас поковыряю
ЯННП, ты столько постов подряд пытаешься объяснить, что хочешь просто alert(window.event.target.textContent)?
Пора отказываться от js. Я не троллю, но это реально бесполезная оболочка. Нет ничего, что было бы невозможно написать на чистом ассемблере.
Как ты на асме клиентский код в вебе писать будешь, поехавший? Вот если бы PNaCl взлетел, тогда другое дело!
>Нормально ли делать замыкание с var that = this
нормально
в кофескрипте посл версии используется обертка (function(_this) { ... })(this) что дает то же самое, только еще создает скоуп.
>Это нормально для JS
Не советую морочиться с приватными полями или методами в JS, правильно все равно не сделать.
Спасибо.
Тогда через that=this делай, ну или через bind, хотя в последнем случае ты теряешь контекст вызова обработчика.
>alert(window.event.target.textContent)
я ещё раз извиняюсь за свою ущербность в неумении нормально объяснить, Антош. Что взять с такой ньюфажины, как я.
Если бы всё было так просто...
ну вот смотри (скрипт для IE еслчё):
http://jsfiddle.net/kzxzo4wx/
кликни там например на Word2b или Word3b - выделяется всегда Word1b, тут у меня range select по спану, но из-за привязанного массива [0], не даёт выделить что-то кроме Word1b.
Это маленький кусок скрипта, но уже на этом этапе запорол. В теории он должен будет выделять контент в спане по клику, с последущем копировании в буфер, вырезании и подстановкой другого контента.
Стаж изучения JS 2недели :(
Большое нубское спасибо!
Извиняйте Антошки, спасибос и бобра вам.
мне же намекали, боже, какой я тупой...
накажите меня, господин
Аноны, ответьте. Чем делать OAuth? Библиотек дохуя, но все они почему-то принимают user/secret и авторизуются с секретом. Но в вебе это же бессмысленно, так?
В чём подвох?
1) Реальной альтернативы ты не предложил, и не можешь предложить.
2) Статья говно, в комментариях подробно разобрано, почему.
3) Тем не менее, JS говно, но см. пункт 1.
Есть функция A которая что то делает, при этом используя функции B и C. Эти функции B и C нигде кроме функции A не используются. Правильно ли обьявлять B и C в функции A?
Вполне.
>Отбросив возню с именами, замечу, что первое время Javascript был очень даже неплох, и период моих наибольших симпатий к нему приходился на то время, когда появился jQuery, но не появился nodejs, а так же не набрали популярность фреймворки типа Angular и Knockout.
Дальше не читал.
Попытался написать скриптик простой. Ниработаит.
Кому не трудно-гляньте ЧЯДНТ. Спасибо
http://jsfiddle.net/5mrvudcy/
Что оно должно делать? Функция validate например, нигде не вызывается. Да и onclick ты неправильно ставишь. И не ясно зачем его ставить в функции под названием validate.
я хотел чтобы, при нажатии на кнопку, должна выполнятся проверка валидности форм
Будь добр, не будь мелкобуквенным.
я слышал что все сейчас пердолятся в MVC фреймворки, но мне бы сперва базовый синтаксис js освоить. вроде логику того что должно происходить я понимаю, но оформить "блок схему" в работающий код у меня часто не получается
undefined - это такая "несуществующая" переменная со значением undefined. Она не строка, и не пустая строка. Чтобы сравнить с пустой строкой, сравнивай с пустым строковым литералом ('' или "").
> но мне бы сперва базовый синтаксис js освоить
Лучше не привыкай к children и особенно к фиксированным индексам внутри children. Есть id/class в HTML, есть целое семейство всяких document.querySelector, querySelectorAll, getElementsByTagName, getElementsByClassName, getElementById в JS.
А еще на странице два #adminbar
спасибо. с undefined понятно.
"document.querySelector, querySelectorAll, getElementsByTagName, getElementsByClassName, getElementById" - это функции jQuery?
> это функции jQuery?
Нет, это собственные функции DOM. Первые две появились относительно недавно.
В jQuery с их помощью реализованы селекторы собственно в функции jQuery() она же $.
всё ясно. добра тебе
http://pastebin.com/s8bQdTX6
beginPath!!!! beginPath, сука!!!! Я думал, с ума сойду.
Есть произвольный кусок жс кода. Следует его проверить на использование только определенного класса функций, сторонних библиотек. А еще он не должен подгружать контент со сторонних сайтов. Как это сделать?
_жс не знаю вообще_
например так. Но если ты не знаешь js то и не поймешь как это работает.
http://ideone.com/cO6SL7
Ты давай покукарекай. Обьектно-ориентированность - от слов обьект и ориентированность. Не важно какая система наследования. Важно - то что есть обьекты\методы\свойства.
абъекты эт карочи када посылаешь сообщения, так Алан Кей сказал.
jQuery('#hex_'+x+'_'+y).css('top', yPos).css('left', xPos).css('z-index', 10);
Какую самую тупую ошибку я мог тут сделать? В консоли #hex_0_0, элемент с ИД hex_0_0 на странице есть.
Еще тупая догадка: в id элемента случайно не "#hex_0_0" по внимательности написал (первый символ)?
id="hex_{{hex.x}}_{{hex.y}}"
Вообще, наверное, придется положить хуй на желание сделать красиво и перестать пытаться чинить то, что работает, хоть работает оно и на жквери.
Создается объект у которого есть куча геттеров с именами такими же как у глобальных переменных. При обращении к этим геттерам бросается исключение. Потом код, который нужно выполнить, оборачивается в конструкцию with с этим объектом и запускается. Таким образом если в коде где-то встречается обращение к глобальной переменной вместо этого идет обращение к свойству объекта, которое кинет исключение.
Q: я нихуя не понел объясни по человечески
A: нахуй пройди, читай доки в оп посте и просвещайся.
Начни с console.log(jQuery('#hex_'+x+'_'+y)) и возможно увидишь что в тот момент элемента еще не было.
Я пробовал вызывать эту хуиту $watch и директивой. Ладно, похуй, надеюсь от того, что чисто фронтэндовый функционал работает на жквери, команда ангуляра хуже спать не станет.
Я бы тебе посоветовал начать самому писать рекурсивные функции. Начни с простого: посл-сть фибоначчи, возведение в степень, суммирование списка чисел.
Хз нахер пишут так, некоторые вещи кажется проще представить ввиде рекурсии.
Это если ты хочешь разобраться как рекурсия работает. А так, в js лучше все-таки циклом ебашить, js tail-рекурсию вроде не поддерживает.
спасиб. попробую
Если тестирую e2e c debug: true в grunt-protractor-runner – я могу использовать стандартные cont/next/prev, но как только захожу в repl и пытаюсь что-то делать – пишет No frames.
А, все, с юнит-тестами разобрался – singleRun: true был в конфиге гранта и переписывал конфиг кармы.
С e2e все равно не понятно.
Замени window.XMLHttpRequest на свой.
Нагуглил некоторые костыли stackoverflow.com/questions/18989345/how-do-i-reload-a-greasemonkey-script-when-ajax-changes-the-url-without-reloadin
Пожалуй напишу свой - буду обрабатывать клик при переходе по ссылке и onpopstate при переходе назад.
Да-да, это и имел ввиду.
Решил использовать AngularJS. Запилил на NetBeansе HTML5 Application проект (бекенд уже есть), там есть возможность сразу достать шаблон AngularJS-seed. Достал. Но не работает. Там нужно сделать npm-install и bower-install. Тыкаю правой кнопкой по проекту - тыкаю - в выводе тарабрские квадратики вместо ошибок. Плюс ругается, что нету NodeJS (нахуя он вообще тут нужен?). Поставил NodeJS как плагин в Нетбинсе - нихуя, всё равно ругается и нихуя не инсталлирует.
Пердолится с гитами не очень хочется. В интернетах шаблона AngularJS проекта нет, только инструкции как пердолится с гитом/Mavenом и прочей хуйнёй.
Что делать? Может кто-то скинет работающий AngularJS проект, чтобы там все зависимости были захуячены и т.д.?
То есть, есть general.js, я даю команду, и он разбивается на home.js, edit.js, и так далее. Ну а если нельзя, как вы подходите к организации процесса работы с JS? Я не очень понимаю, зачем мне нужен фреймворк, потому что у меня там одни рудиментарные манипуляции с DOM да Аякс-запросы, но, может, нужен? Объясните мне, пожалуйста, зачем MVC в JS, я правда не понимаю.
Попробуй с todomvc скачать пример.
И вообще, [code]
sudo apt-get install nodejs
npm install -g bower
cd ./proj
npm install
bower install
npm start
[/code]
>>390870
Обычно стоит вопрос как из кучи js-файлов слепить один для деплоя, а не наоборот. Не пойму что ты хочешь.
А фреймворки нужны как раз для упрощения манипуляций с DOM и HTTP, а так же для создания модульного приложения с правилной декомпозицией функиональности.
>>390885
Да в любой конторе, наверное, где нужен js-dev.
>Обычно стоит вопрос как из кучи js-файлов слепить один для деплоя, а не наоборот. Не пойму что ты хочешь.
Ну смотри, есть загрузка файлов на Аяксе на одной странице, зачем мне этот кусок кода посылать на клиентскую сторону для всех страниц? Дело не только в оптимизации, на других страницах и нод-то таких нет, выбирать нечего, потому что форма только одна, и она на той конкретной одной странице — в консоль вылетает ошибка.
>для создания модульного приложения с правилной декомпозицией функиональности
Я знаю, что такое MVC, я не могу понять, зачем это нужно для школоэффектов и асинхронных запросов, и прошу это объяснить на, например, коком-нибудь реалистичном сценарии; мол, для какого рода задач может потребоваться такой фреймворк.
>зачем это нужно для школоэффектов и асинхронных запросов
Для создания SPA, где большая часть логики расположена у клиента. Сервер в этом случае выполняет роль json-бэкенда, который чаще всего отдает необработанные данные и, если нужно, занимается валидацией.
Таким образом абстрактный SPA-двач при заходе на доску отдает json со всеми тредами, а MVC фреймворк на клиенте рендерит html, школоэффекты и функционал в рамках доски вроде отправки нового поста или просмотра треда.
Блядь, есть какие-нибудь шаблонизаторы чтобы был как swig/nunjucks, но без template inheritance и с паршиалами?
Мимоучилдругойязык.
Но ведь тогда и хачкель нинужен, ОХ ВЕЙТ
Через 5 недель ты поймёшь, что знаешь js. Через 10 недель ты поймёшь, что только начал.
Как лучше инжектить (?) бд в роутер экспресса?
Пока нагуглил два способа: через добавление поля в реквест и напрямую когда вызываешь модуль.
Я делаю запрещённый во всех современных браузерах приём, а именно, реквестую запрос страницы из кроссдоменно и получаю ожидаемый Origin:null и Access Denied.
На дворе, между прочим, почти 2015 год, а я до сих пор не могу без костылей и проксирования аяксово гетовать между доменами? Поясните за последний Chrome, можно ли как-то разрешить без всяких костылей кроссдоменные запросы. Чтобы пользователь один раз сказал или лучше не говорил, да, типа разрешаю.
http://jsfiddle.net/m2cjcqn0/
в месте "result=true break :" Знаю что можно реализовать через if, но пытаюсь сделать через оператор "?"
Делай по классике. Я сам не использую ?, только в самых элементарных вилках, когда нужно 0 или 1 присвоить. Потому что плохо читается такой код.
Заработало.
Пожалуйста.
нехуя нельзя
но я для тебя зделал на кофискрипте
чтобы показать как я могу
http://pastebin.com/Ms3e2hVE
Спасибо.
Ок зелененький, ну допустим мы решили что js говно. Какой язык ты предлагаешь в качестве альтернативы?
Исповедь спермообезьяны (со своими обезьяньими проекциями), программиста на спермодиалекте.
Потому что в dev окружении домен будет другим
Начал изужать джиквери, вот нашел один эффект для выпадающего меню.
Пробовал прикрутить - не пашет =(
Спешите видеть, дауны помогают дауну
1. Верни скобки на место, мудила.
2. Если хочешь разместить пример кода - используй codepen или jsfiddle, никто здесь не будет вглядываться в твои сраные скриншоты, мудила.
3. Ты - мудила, мудила.
sublime-text
Поясните на простом примере в чем разница, и где использует первый, а где второй?
Backbone - очень простой сам по себе, в нем почти ничего нет, только простенькое разделение на модель и вьюху и немножко бойлерплейта, связанного с обработкой событий и общением с бэкендом. Этакий энтри-левел мвц-фреймворков.
Angular - навороченный комбайн с собственной модульной системой, системйо шаблонов с расширением HTML'а, 2way дата-байндингом и прочим, прочим, прочим. Порог входа довольно высок, что хорошо подтверждается нытик-статьями о том, какой ангулар плохой, неудобный и ваще нихуя непонятно.
Тот же js, но с традиционным наследованием, необязательной статической типизацией и умным автокомплитом для Visual Studio и Webstorm. Из минусов: для того, чтобы использовать js-либы нужны специальные .d.ts хидеры к ним с объявлениями типов, и местный аналог директивы #include с указанием пути к файлу очень задалбывает, если много папок. В принципе язык понравится тем, кто не может жить без IntelliSense и не переваривает прототипное наследование.
толсто
Я сам с нуля писал приложения на разных Basic-ах, C-C# (Visual C), Java, Pascalе-образных языках, но всё что касается моей практике с JS ограничивалось возможностями конкретного браузера, а они, мягко говоря, отстают от системных возможностей.
Даже java приложения обгоняют те же самые, написанные под Chrome и FF.
В первую очередь беспокоит графика. Раньше стояла проблема с доступным местом, но сейчас благо появились разрешения для unlim storage, но вот графика лагает при работе даже с примитивами.
Требуется сделать сайт на Jquery + API Яндекс.Карт + API vk + PHP + Mysql.
Сервис, в котром пользователи могут добавлять точки на карте, а потом просматривать их. Авторизация через контакт, хранение данных в бд, страницы - на простом php-фреймоворке по вашему выбору (думаю о F3 Framework).
Ближайший пример: http://красивыйпетербург.рф/map
Будет ТЗ и постановка задач в реальном времени. Работа на несколько часов в день.
Оплата по часам. Опишите что умеете в двух словах.
randallyoungyoung@yahoo.com
>Напишите какие реальные задачи вы решили при помощи яваскрипта.
Напишите какие реальные задачи вы решили хоть когда-нибудь.
fix
Блять, гуглю хром АПИ и найти не могу, чувствую себя мудаком.
Я не програмизм, сначала взял за питон, потом почему-то режил ЖС дрочить и какой-то он ебаный, по сравнению с питоном.
все правильно
в жс специальный синтаксис чтобы крестушки и жабушки не бугуртили что нипанятна
поэтому сразу бери кофескрипт
он удобный и не ебучий
Что тебе кажется в нем "ебучим"? Я нихуя не кодер, но в свободное время забавляюсь этим как хобби. У JS пока самый наглядно-понятный синтаксис, как по мне.
>по сравнению с питоном.
По сравнению с этим уёбищем даже брэйнфак выглядит лучше. Просто ты нажрался говна в самом начале пути.
м.б. console.dir
Программирование - растяжимое понятие. Зависит от того, чем ты хочешь заниматься. Для быдломакаки, клепающей формочки, такие вещи не нужны. Если не хочешь быть среди этих макак, коих 90%, подтягивай матан и что-нибудь дальше азов.
не обязательно. Поддержу >>392751
Рекурсия - вызов процедуры (функции) самой себя. На практике очень много косвенных рекурсий (функция А вызывает ф-ию B, та С, С вызывает А.) А вообще многоуровневых рекурсий стоит избегать, т.к. стек кушает, замедляет работу. Фибоначчи рекурсией решается только для примера.
Рекурсию понять не сложно, особенно людям знакомым с математикой.
Вот ты хочешь числа фибоначчи например.
Идем на вики, смотрим определение.
F(0) = 0, F(1) = 1, F(n) = F(n - 1) + F(n - 2)
Записываем то же самое но кодом:
f 0 = 0
f 1 = 1
f n = f (n - 1) + f (n - 2)
вот и все, вся рекурсия
http://ideone.com/1pe5Fb
хаскель это ML-подобный язык, простой и понятный для математиков. К сожалению исторически сложилось так, что сейчас в мейнстриме машинные языки типа C++, которые созданы для компьютера, а не для человека. Новички просто охуевают от их нелогичности и идиотизма, а олдовые байтоебы постят кулфейсы и говорят что программирование дано не каждому. Конечно если 10 лет лизать жопу машине то в конце концов привыкнешь и это будет казаться естественным и логичным положением вещей.
Нет, хаскель - hope/miranda подобный, ml - другое семейство. Вот scala - вполне себе новый его представитель, и системой типов, и идеологически, и даже синтаксически во многом.
Конечно я разобрался в конкретной функции, через дебаг консоль (ф12 хром + включенные Брикпоинты).
Возможно я не до конца понимаю что такое Рекурсия (остаток в уме) и как JS вообще выполняет код. Просто он как-то хуй пойми скачет и видимо это в рекурсии такое.
Короче ебанука я лерн.жаваскрипт.ру с самого начала вчитываясь в каждую блядскую букву. Хотя это хобби и такими темпами базовый уровен ЖС говнокодера я получу года через 1,5.
ну вот нет же тут никакой рекурсии, зато есть цикл.
вот тебе с рекурсией:
function fib(n) {
switch(n) {
case 0: return 0;
case 1: return 1;
default: return fib(n - 1) + fib(n - 2);
}
}
о чем я и говорил, императивные программы с переменными и циклами нихера не просто понять, если мозг не загажен школьным курсом информатики
Я знаю что через цикл. Ты лучше напиши как Фибоначчи работает.
Что-то я хуй опять понял что.
Оно по частям считает каждое ф(н-1), (н-2).
Сука.
Спасибо.
Если хочешь научиться всяким рекурсиям и т.п. нужно читать SICP и курсы по ФП на курсере, а не сайт про синтаксис js или про что он там?
ну епта как работает, по определению каждое число фибоначчи это сумма его предыдущих членов, вот так и работает
т.е. допустим надо вычислить fib(3)
fib(3) = fib(1) + fib(2)
fib(1) мы знаем это 1
fib(2) = fib(0) + fib(1)
тогда
fib(3) = fib(1) + (fib(0) + fib(1))
fib(3) = 1 + (0 + 1)
fib(3) = 1 + 1
fib(3) = 2
это с рекурсией, с циклом по другому
там переменные просто называются a b с и это тебя путает
т.е. там на каждом шаге цикла есть a и b - 2 последние числа в последовательности
вычисляется c = a + b - следующее число последовательности
потом a и b как бы сдвигаются вправо на один элемент последовательности
и все это повторяется пока в b не будет элемент последовательности с номером n
на вот примерчик. Только с факториалом.
function factorialis(n) {
var who = 'F(' + n + '): ';
console.log(who + 'Вход в функцию factorialis с параметром n = ' + n);
if (n == 0) {
console.log(who + 'Факториал от 0 равен 1');
console.log(who + 'Вернёмся обратно с результатом "1"');
return 1;
} else {
console.log(who + 'Сейчас мы вычислим факториал от ' + n);
console.log(who + 'n! = n (n - 1)!, т.е. ' + n + '! = ' + n + ' (' + n + ' - 1)! = ' + n + '! = ' + n + ' ' + (n - 1) + '!');
var res = n factorialis(n - 1);
console.log(who + 'Вычислили! Факториал от ' + n + '! равен ' + res);
console.log(who + 'Вернёмся обратно с результатом "' + res + '"');
return res;
}
}
Всё это в консоль. А после:
factorialis(5):
В консоли будет всё необходимое для понимания
JS самый тупорылый язык веба.
Ни замена ни дополнение. Вообще никакой связи. jQuery медленный, его поменьше надо использовать.
Ангуляр сразу не осилишь. Там много асинхронщины и наследований, нужно более-менее уметь в js чтобы делать что-то сложнее хелоуворлда.
Но можешь почитать какой-нибудь ng-book и попробовать. Как только заебет это дело, начнешь делать школоэффекты с jquery и изучать язык.
ng - nu i gavno, это значит, что ангуляр - говно
Да не, просто an.us/an.al некрасиво звучит.
Или яваскрипт полностью самодостаточен и полному нубу в программировании можно его начинать учить?
Да как хочешь, так и понимай, пидор ебаный!
Посмотри урок от hexlet на ютубе, базарю еще захочешь.
Java потолще должна быть вроде как.
Почему невозможно найти чисто программистскую работу на JavaScript?
Ведь обязательно в комплекте верстать?...
Что надо, чтобы работать просто программистом JavaScript?
Насколько помню, в вакансиях это обычно приложение к чему-то еще: вебмастер + знание node, java-программист + знание node и т.п. И при этом обязательно опыт 3+ лет.
>>undefined
>undefined
undefined undefined, undefined undefined undefined. undefined undefined undefined, undefined undefined. undefined undefined undefined undefined. undefined undefined. undefined undefined undefined, undefined undefined. undefined? undefined undefined? undefined undefined.
Говна пожуй, школьник
Пришло время напомнить, что the by-design purpose of JavaScript was to make the monkey dance when you moused over it. Scripts were often a single line. We considered ten line scripts to be pretty normal, hundred line scripts to be huge, and thousand line scripts were unheard of. The language was absolutely not designed for programming in the large, and our implementation decisions, performance targets, and so on, were based on that assumption. Since JavaScript was specifically designed for programs where one person could see the whole thing on a single page, JavaScript is not only dynamically typed, but it also lacks a great many other facilities that are commonly used when programming in the large:
There is no modularization system; there are no classes, interfaces, or even namespaces. These elements are in other languages to help organize large codebases.
The inheritance system -- prototype inheritance -- is both weak and poorly understood. It is by no means obvious how to correctly build prototypes for deep hierarchies (a captain is a kind of pirate, a pirate is a kind of person, a person is a kind of thing...) in out-of-the-box JavaScript.
There is no encapsulation whatsoever; every property of every object is yielded up to the for-in construct, and is modifiable at will by any part of the program.
There is no way to annotate any restriction on storage; any variable may hold any value.
But it's not just the lack of facilities that make programming in the large easier. There are also features that make it harder.
JavaScript's error management system is designed with the assumption that the script is running on a web page, that failure is likely, that the cost of failure is low, and that the user who sees the failure is the person least able to fix it: the browser user, not the code's author. Therefore as many errors as possible fail silently and the program keeps trying to muddle on through. This is a reasonable characteristic given the goals of the language, but it surely makes programming in the larger harder because it increases the difficulty of writing test cases. If nothing ever fails it is harder to write tests that detect failure!
Code can modify itself based on user input via facilities such as eval or adding new script blocks to the browser DOM dynamically. Any static analysis tool might not even know what code makes up the program!
And so on.
Пришло время напомнить, что the by-design purpose of JavaScript was to make the monkey dance when you moused over it. Scripts were often a single line. We considered ten line scripts to be pretty normal, hundred line scripts to be huge, and thousand line scripts were unheard of. The language was absolutely not designed for programming in the large, and our implementation decisions, performance targets, and so on, were based on that assumption. Since JavaScript was specifically designed for programs where one person could see the whole thing on a single page, JavaScript is not only dynamically typed, but it also lacks a great many other facilities that are commonly used when programming in the large:
There is no modularization system; there are no classes, interfaces, or even namespaces. These elements are in other languages to help organize large codebases.
The inheritance system -- prototype inheritance -- is both weak and poorly understood. It is by no means obvious how to correctly build prototypes for deep hierarchies (a captain is a kind of pirate, a pirate is a kind of person, a person is a kind of thing...) in out-of-the-box JavaScript.
There is no encapsulation whatsoever; every property of every object is yielded up to the for-in construct, and is modifiable at will by any part of the program.
There is no way to annotate any restriction on storage; any variable may hold any value.
But it's not just the lack of facilities that make programming in the large easier. There are also features that make it harder.
JavaScript's error management system is designed with the assumption that the script is running on a web page, that failure is likely, that the cost of failure is low, and that the user who sees the failure is the person least able to fix it: the browser user, not the code's author. Therefore as many errors as possible fail silently and the program keeps trying to muddle on through. This is a reasonable characteristic given the goals of the language, but it surely makes programming in the larger harder because it increases the difficulty of writing test cases. If nothing ever fails it is harder to write tests that detect failure!
Code can modify itself based on user input via facilities such as eval or adding new script blocks to the browser DOM dynamically. Any static analysis tool might not even know what code makes up the program!
And so on.
Теперь это официальнай ОП-пикча джаваскрипт тредов
Это уже не говно
Ну давай разберем по частям тобою написанное.
>by-design purpose of JavaScript was to make the monkey dance when you moused over it
ну а теперь на нем пишут фреймворки
>There is no modularization system
модули можно сделать, в ES6 есть из коробки
>there are no classes
делаются в 2 строчки, в ES6 есть из коробки
>interfaces
кукареку жава макаки
>namespaces
объект это неймспейс
>prototype inheritance -- is both weak and poorly understood
баттхерт неосилятора
>every property of every object is yielded up to the for-in construct
пиздеж
>and is modifiable at will by any part of the program
пиздеж
>any variable may hold any value
гугл://динамическая типизация
>Therefore as many errors as possible fail silently
наглый пиздеж
>Code can modify itself based on user input via facilities such as eval or adding new script blocks to the browser DOM dynamically
звучит как фича
>And so on
and soo snool
Ну давай разберем по частям тобою написанное.
>by-design purpose of JavaScript was to make the monkey dance when you moused over it
ну а теперь на нем пишут фреймворки
>There is no modularization system
модули можно сделать, в ES6 есть из коробки
>there are no classes
делаются в 2 строчки, в ES6 есть из коробки
>interfaces
кукареку жава макаки
>namespaces
объект это неймспейс
>prototype inheritance -- is both weak and poorly understood
баттхерт неосилятора
>every property of every object is yielded up to the for-in construct
пиздеж
>and is modifiable at will by any part of the program
пиздеж
>any variable may hold any value
гугл://динамическая типизация
>Therefore as many errors as possible fail silently
наглый пиздеж
>Code can modify itself based on user input via facilities such as eval or adding new script blocks to the browser DOM dynamically
звучит как фича
>And so on
and soo snool
Если в языке есть более одного общепринятого подхода к таким базовым вещам как модули и ОО-система, этот язык накладывает огромное пенальти на код-реюз и плодит impedance mismatch на каждом шагу. Эти проблемы даже ужаснее динамической типизации, но лично мне даже её одной достаточно, чтобы стремиться как можно сильнее изолироваться от необходимости иметь дело с такими ЯП.
Маняотрицания html-программиста
> более одного общепринятого подхода к таким базовым вещам как модули и ОО-система
где написано про более одного общепринятого подхода? правильно, нигде, фантазер
>ужаснее динамической типизации
зато можно хуяк хуяк и в продакшен сучечка, к тому же если у тебя что-то слабее haskell или scala то ты заебешься писать абстрактные фабрики декораторов
> где написано про более одного общепринятого подхода?
Я не имею права оперировать фактами о JS кроме указанных в твоём посте? Это какая-то игра? В ангуляре своя система модулей, в requirejs своя, в новом ecmascript своя, а и ещё десятки их. Это создаёт несовместимости между библиотеками на ровном месте. И это только модули, а уж разные ОО-системы... Бакбон, ембер, extjs, prototype, и сотни ещё - в каждой второй либе своя, и разумеется, если ты скормишь типичный инстанс объекта либы 1 в метод либы 2, который ожидаёт свои объекты со своей ёба рефлексией или своим уникальным подходом к super-вызовам, всё развалится.
> если у тебя что-то слабее haskell или scala то ты заебешься писать абстрактные фабрики декораторов
Оправдания динамопарашников. Даже старая Java после JS - как глоток свежего воздуха, такой-то методизм, абстракция, реюз. Современные редакции Java EE (7) и Spring доводят аннотации до такого уровня, что бойлерплейта зачастую меньше, чем во всяких питонах, а качество, реюзабельности, понятность кода и самодокументируемость его сигнатурами при этом намного выше. А гляди, как джависты сейчас врапперы для REST API генерируют, описывая минимальную нужную информацию аннотациями: http://square.github.io/retrofit/
что-то ты многовато знаешь для хейтора, ты бывший js-макак?
>десятки
>сотни
не преувеличивай
я например в своем проекте на кофискрипте использовал Backbone.Events без самого бекбона как миксин к классам
>Java
>глоток свежего воздуха
ох пиздец, я помню как в жаве банальный мап делается, такой-то бойлерплейт
>аннотации
костыли, та же самая динамика нечекаемая при компиляции
>я например в своем проекте на кофискрипте использовал Backbone.Events без самого бекбона как миксин к классам
ну ты и хипстер
>хипстер
нет, макбука нет, маффины не люблю, в стартапах не участвую
делаю игрушки в одного как Бобров, в которые никто не играет
Есть 2 стула , на одном javascript дроченый(текущая работа, клиент+сервер) , на другом java точеная.
На какой сесть?
От фронтенда воротит, а как я понимаю основное развитие js разработчика это именно в сторону фронтенда.
Школотуня, ты хоть видела, сколько для аналогичного враппера хуеты надо писать вручную на питоне?
https://github.com/copitux/python-github3/blob/master/pygithub3/services/repos/__init__.py#L45
https://github.com/copitux/python-github3/blob/master/pygithub3/services/base.py#L42
https://github.com/copitux/python-github3/blob/master/pygithub3/requests/base.py#L94
Обрати внимание, этот код - не аналог либы retrofit, это чисто специфический API враппер только и исключительно для гитхабовского API.
То, что на божественной жабке делается при помощи обобщённой библиотеки в 4 строки (+ описание модели Repo) http://pastebin.com/5u12LwBP, на питоне (тоже без учёта Repo), потребует 100500 loc ручной работы и десятки фабрик адаптеров.
Скажем, я пытался так {
}
и сяк
{
}
Но таки не пришёл к лучшему решению. Как вы ставите {} скобки и самое главное ПОЧЕМУ?
>>39376
Очевидно, что {
}
для ёбаных говноедов. Правильные пацаны делают
{
}
и как можно больше пустых строк.
Открывающий курлибрейс с новой строки пишут только дуднетчики, что вполне закономерно, ведь у них всё через жопу - и методы с пропертями с большой буквы пишут так же как типы, и какие-то встроеные бойлерплейтные мультикасты пердолят вместо первоклассных Event<T>, и вместо Future[T] монад ебутся с петушиными некомпозабельными Task<CocyXyi> и многое другое.
ШИТО?
>>393784
В любом языке пишу скобку с новой строки. На той же строке открывают только дрочеры на компактность, любители плотных как стена, вырвиглазных блоков, в которых код выделяется только за счёт выравнивая. Нормальные пацаны же выделяют куски кода как выравниванием, так и пустыми строками, одной скобкой на строке и т.д.
Ещё ненавижу когда экономят на пробелах перед и после операторов и вообще на всем, как будто стремясь заполнить каждое пустое место. По моей личной статистике, таких, среди любителей открывать скобку на той же строке куда больше.
Тут, как я понимаю, мы сначала делаем пустой объект dom = {}, а потом добавляем метод Animation. Не легче сразу сделать "класс" Animation и как обычно добавить ему методы?
И еще вопрос в догонку. Может ли аргумент в конструкторе получить доступ к данным этого конструктора?
неправильно ты понимаешь
если хочется без префикса делай так:
var Animation = dom.Animation;
new Animation()
http://stackoverflow.com/questions/3641519/why-does-a-results-vary-based-on-curly-brace-placement
Ты наверное еще табуляцию используешь вместо пробелов?
Его для проектов с базами данных хорошо использовать. На ура идёт в гос учреждениях) Те же формочки, только в браузере. Но он медленный, нужно знать, как обратиться к элементу, чтоб не затормозить систему линий раз
Зато кроссплатформенный и не надо никаких виртуальных машин/анальных прошивок и прочего дерьма.
>А у этого в JS тоже есть подводные камни?
Нет, это был сарказм.
Хотя пробелы > табуляции, потому, что при копипасте не распидорашивает код.
Returns true if value is undefined.
isNull_.isNull(object)
Returns true if the value of object is null.
isNaN_.isNaN(object)
Returns true if object is NaN.
>В любом языке пишу скобку с новой строки.
Если в js надо вернуть объект, пишешь
return
{
a:'b';
}
? Тогда у меня для тебя плохие новости.
>then most readers will think that block level variables will be defined. JavaScript don't have block level variables. All variables will be interpreted as function level defined.
Ну что ты тут кому доказываешь? Пиздуй пиши на своем любимом хацкиле, мамин борщехлеб.
>var self = this;
>Q. Why not NaCl or PNaCl instead? Are you just being stubborn about JavaScript?
>A. The principal benefit of asm.js over whole new technologies like NaCl and PNaCl is that it works today: existing JavaScript engines already optimize this style of code quite well. This means that developers can ship asm.js today and it'll simply get faster over time. Another important benefit is that it's far simpler to implement, requiring very little additional machinery on top of existing JavaScript engines and no API compatibility layer.
Кажется мозилла меня убедила, но как сие чудо выглядит и как хеллоуворлднуть?
Почти всегда пользуюсь такой хернёй, всё работает отлично. Состояние держим в переменной, всё дерево возможных колбэков в одном замыкании. @ РАБОТАЕТ.
var busy=false;
HUITA.onclick=function(){
if (busy) return;
busy = true;
AJAX.request({
...
oncomplete: function(){ busy = false; }
});
}
Разве это не самое простое и лобовое решение? Без изучения философии промисов и прочего?
Вообще-то тут обсуждали распространение состояния (и его изменений) по коду, а промисы - это о вычислениях, которые, если повезёт, как-нибудь выполнятся, и вернут какой-то результат.
>распространение состояния (и его изменений) по коду
В идеале оно должно быть в одном месте, не надо ничего никуда распространять.
>о вычислениях, которые, если повезёт
В общем случае да, но в жс это в основном применяется для запуска чего-нибудь, что вызовет колбэк. По крайней мере фронтэндный жс.
> для запуска чего-нибудь, что вызовет колбэк
Просто интересно, функцию map для массивов в жс ты тоже считаешь промисом? Твоему "определению" удовлетворяет.
Промис в жс - это композабельное асинхронное вычисление, которое может зафейлиться, а может завершиться успешно и вернуть значение. Комбинируется как-раз по успехам (по функции, принимающей результат успешного выполнения промиса и возвращающей отображенный результат или (А+) новый промис).
Или всё ехал коллбек через коллбек?
Давно уже. Просто делаешь func.toString, заменяешь все "varname <- expr" на монадические связывания, и обратно компилируешь eval'ом: http://habrahabr.ru/post/232671/
В комментах ссылки интереснее статьи http://livescript.net/#functions-backcalls
Такая то адовая помесь хачкеля с f# и ещё какой-то хуитой
А у нас на работе народ тоже этот js заебал в конец, начинают дрочить на TypeScript потихоньку
Да нормально всё с js. Для скорости и компиляции из других языков есть asm.js, в статьях пишут что проседание скорости по сравнению с C/C++ порядка 1.5-2x. Для мелких поделок, где чаще всего жс и применяется - он почти идеален.
> Для мелких поделок, где чаще всего жс и применяется - он почти идеален.
Ну так видишь, что он пишет "народ js заебал вконец". Следовательно у них не мелкие поделки, поэтому на ts переходить вполне рационально.
> В комментах ссылки интереснее статьи http://livescript.net/#functions-backcalls
Такая то адовая помесь хачкеля с f# и ещё какой-то хуитой
Такими хуитами хорошо пользоваться для того, чтобы потом вернуться в хачкель и вздохнуть "как же хорошо, что в хачкеле есть типы!"
Переписываю мелкую игрушку танчики, код становится намного короче и читаемее. Несколько раз делал замены не особенно очевидных вещей, плохо расписанных в туторе:
if a > 0 return 0
нужно заменять на
if a > 0 then return 0
Внутри класса нужно делать
property: value
method: (args...) ->
вместо моего наобумного
@property = value
@method = (args...) ->
Хотя это можно всё вставить в constructor и будет работать.
Стрелочки как я понял всегда ->, кроме случая когда нужно забиндить функцию на текущий this, тогда =>.
Вызов функции без аргумента:
fn()
В принципе всё можно вызывать по старинке:
fn(1, 2, 3) # пробел перед скобкой ( лучше не ставить
А можно убрать скобки
fn 1, 2, 3
Главное иметь ввиду что съедается весь остаток выражения
fn 1 + 2 + 3 = fn(1+2+3)
Классы сделали всё красивее и на радость заработали без проблем с обычным ковырянием Class.prototype (со старым кодом короче).
Смущает только что каждое выражение очень хочет залезть в return. Не очень страшно, но вот лишняя сборка списка из цикла может покалечить производительность. Нормальные посоны пишут явный return в таких случаях или оставляют на самотёк?
Переписываю мелкую игрушку танчики, код становится намного короче и читаемее. Несколько раз делал замены не особенно очевидных вещей, плохо расписанных в туторе:
if a > 0 return 0
нужно заменять на
if a > 0 then return 0
Внутри класса нужно делать
property: value
method: (args...) ->
вместо моего наобумного
@property = value
@method = (args...) ->
Хотя это можно всё вставить в constructor и будет работать.
Стрелочки как я понял всегда ->, кроме случая когда нужно забиндить функцию на текущий this, тогда =>.
Вызов функции без аргумента:
fn()
В принципе всё можно вызывать по старинке:
fn(1, 2, 3) # пробел перед скобкой ( лучше не ставить
А можно убрать скобки
fn 1, 2, 3
Главное иметь ввиду что съедается весь остаток выражения
fn 1 + 2 + 3 = fn(1+2+3)
Классы сделали всё красивее и на радость заработали без проблем с обычным ковырянием Class.prototype (со старым кодом короче).
Смущает только что каждое выражение очень хочет залезть в return. Не очень страшно, но вот лишняя сборка списка из цикла может покалечить производительность. Нормальные посоны пишут явный return в таких случаях или оставляют на самотёк?
ценитель кофе в итт
>Нормальные посоны пишут явный return в таких случаях или оставляют на самотёк?
да если функция не возвращает нихуя, пишу return в конце, тоже бесит такой костыль
https://chrome.google.com/webstore/detail/2chmon/pabmeaclcedipfkkgnhkhohmgoajnbfm
Ссылка на гитхаб в описании, какого-то хуя она в спам-листе
Подскажи, что почитать и практиковать, чтобы научится произвольно писать подобный код. Я не могу написать ничего сложнее обработки событий на жыквери.
Проиграл с боли в исходниках
https://www.coursera.org/course/proglang
https://www.coursera.org/course/progfun
http://www.manning.com/bjarnason/
И программировать на одном из фунциональных языков. Даже можно вместо джаваскрипта использовать какой-нибудь фя, компилирующийся в него, например https://github.com/clojure/clojurescript или https://github.com/scala-js/scala-js тем самым качая навык программирования и выполняя полезную работу.
Спасибо, попробую сейчас. Кстати, я наверное все таки в своем вопросе подразумевал не саму функциональщину, а просто навык написания полезного кода, а не "сменить класс, подгрузить аяксом" и проч. Это я так понимаю мне на курсы по алгоритмам еще надо?
Функциональщна как раз поможет тебе писать такой код, ее принципы никто не мешает использовать в императивных языках. Курсы по алгоритмам дадут тебе понимание, как работают современные алгоритмы и как написать собственнный эффективный алгоритм с минимальной возможной сложностью. Задача на самом деле довольно частная и второстепенная, в веб-программировании почти не встречается, хотя минимальное понимание сложности алгоритмов все равно необходимо. Навык написания простого, безопасного и реюзабельного кода на то и навык, что приходит с опытом. Программируй, стараясь писать код, от которого получаешь удовольствие, а не хуяк хуяк и в продакшн, изучай чужой код, который тебе кажется таким. В принципе, первый курс в списке как раз объясняет подходы к программированию, которые помогут тебе обогатить багаж приемов, улучшаюших код. Можно, конечно, еще порекомендовать SICP, но я лично его не осилил. Вообще, первые два курса во многом построены на основе этой книги, даже некоторые задания взяты оттуда. Первый курс еще хорош тем, что твои задания будут оценивать другие ученики как раз по критериям простоты, оправданности и понятности кода, а это то, чего ты хочешь. Короче, рекомендую настоятельно, там как раз первая неделя только прошла.
Спасибо, значит буду проходить этот курс. Моя проблема в целом в том, что я типичная макака, которых полно, использую готовые решения, но сам сообразить как такое написать, не могу.
Тут я думаю проблема уже в том, что я просто туп для программирования, поэтому ничего и не получается толком. Как пример, вот ты написал дополнение к хрому, я поглядел сурс, там полно js ок, внутри которых куча непонятных мне вещей, и еще больше не понятно как они взаимодействуют друг с другом, да я даже чертов калькулятор наверное не напишу. Надо вот щас попробовать.
Ну? я тоже бы не понял как это взаимодействует до того, как почитал документацию по api хрома для дополнений. Там вся архитектура делится на четыре уровня: непосредственно загруженная во вкладке страница (hook.js), popup.js, contentscript.js и background.js. contentscipt.js запускается при каждой загрузке страницы, а background работает постоянно в одном экземпляре, popup это окошечко, которое появляется при нажатии на иконку дополнения. Общение между ними происходит через сообщения, отправляемые с помощью chrome.runtime.sendMessage(), принимаются сообщения через колбек chrome.runtime.onMessage.addListener(function(request, sender, sendResponse){...}). Исключение только для самой страницы, оттуда сообщения отправляются с помощью window.postMessage.
Слышал, что Angular более сложный и начал с него. Две недели умывался слезами перечитывая по 15 раз мануалы, туториалы и документацию, но всё таки более или менее разобрался.
Теперь получил задание разбираться с Backbone (а точнее - с Marionette,js попутно разбираясь с Backbone и всё это на CoffeeScript). После Angular'а всё очень непонятно, не знаю, с какой стороны подступиться.
мимо-неосилятор
>Две недели умывался слезами перечитывая по 15 раз мануалы
Вот это очень точно сказано. На хабре вот ещё:
>За всю мою карьеру, единственная платформа которая приблизилась по уровню мучений при попытке расширить ее, это серверные элементы управления в ASP.net WebForms.
Из своего опыта помню, что коллеги еблись с ним знатно, пока подключили ссаный rest интерфейс.
Странно, может ты в глаза ебёшься? В Украшке вакансий хватает, а в Рашке - так вообще навалом. Разве что ты в совсем забитой деревне какой.
Реально ли найти в Рашке удаленку в этом направлении ? Постоянно мониторю brainstorage и hh, но пока не густо.
Конечно реально. Где-то месяц назад одну вакансию вбрасывали прямо на двач, лол.
http://freelansim.ru/tasks?q=angular
http://brainstorage.me/jobs?q=angular
http://hh.ru/vacancy/11908919?query=angular
http://hh.ru/vacancy/11842646?query=angular
и ещё куча (фильтр слева поставь "удалёнка")
Охуеть. Сменить штоле работу. Нахуя я тогда петон учил. Мне что нравится во фронтэндерах, что думать надо мало, видимых результатов много, и можно заниматься хтмл-ксс-жс, а остальное принеси-подай слать в хуй. Набирать и кликать только много придётся.
На фрилансим смотрел, все заказы были сделаны 2-3-4-5-6-7-8 месяцев назад. Ничего даже недельного нету.
На брейнстордж - все либо мосцква и питер в офис, либо нужно знать еще кучу бекенда. Там тоже искал.
На hh сру сейм щит проблема.
>>394911
Там чисто ангуляр уже никому не нужен, только полный стак с бекендом.
алсо
>Разве что ты в совсем забитой деревне какой.
This (150k население)
Короче, проблема во мне. Надо без денег ехать в большой город, и еще прокачать скиллы, выучить какой нибудь язык серверный. И тогда может быть смогу 100-200 баксов иметь в месяц. А пока что я ем блины со сметаной, бабушка сделала.
Говорила мама, не иди в погромисты, иди на завод, вон все мальчики щас на заводе работают, а кампутерщики тут не нужны
Забыл , в наличии еще хороший английский. Есть ли смысл дальше задрачивать js , чтобы попасть на odesk? Или там и так конкуренция бешеная.
Я бы на твоем месте с такими знаниями шел дальше по front-end пути, больше свободы, а денег не меньше чем у офисного джависта.
Алсо, дико завидую всем кто может в ноду и ангуляр. Я сколько раз не пытался учить, ничего не получается. Может дашь советов мудрых? Как сам качал скилл в этом? Что писал, и что читал?
Поставь себе задачу реализовать что-нибудь на ноде и ангуляре, классика - своя макаба. И реализовывай. Так и обучишься.
Да, я уже ставил себе задачу, написать подобие твиттера, но застопорился на этапе, где надо загрузить аватарку, и чтоб она сразу отобразилась, ну и возможность ее удалять.
А учебные материалы ты какие использовал? И чем занимаешься на работе, что пишут на ноде и ангуляр для продушкена в раше?
По ноде в основном форумы + документацию.
По ангуляру различные статейки западных фронтендеров по ней , + ng-book.(Ибо на мой взгляд официальные доки ангуляра очень путано написаны для новичка)
Ну и плюс с работой фортануло , ибо попал в нужный момент , когда нужны были люди которые могут хоть какой-либо код писать , т.е по сути обучался по ходу работы (да и сейчас обучаюсь что уж там).
Я из села. Работы нет, бабла нет, возможности заработать нет, возможности уехать нет.
Хотя ладно, вру, заработать 300 долларов за месяц вполне реально, но они уходят на жизнь. Так что скорее всего вся моя жизнь не удалась уже.
После него читайте angular style от John Papa или Todd Moto. Вообще, читайте Тода, он крутой парень и много пишет про Angular. Вот, например, http://www.airpair.com/angularjs?ti=#MxkrVCfYlQfeQLBy.99
У меня есть код http://jsfiddle.net/4suou1ok/
Мне нужно значение переменной damnVariable использовать в глобальной области видимости. Как это делается, отцы-основатели? У Брендона Айка уже спрашивал- пока не отвечает.
ты тупой просто, ты функцию то вызвал? ты знаком понимаешь как работают калбаки в джс?
вызывал я функцию, она свою работу делает, а вот значение переменной из неё я достать не могу чтоб использовать в другой функции
спасибо большое за потраченное время. есть некоторые непонятные для меня элементы. буду разбираться и качать скил
У тебя код в глобальном скопе выполняется раньше, чем display дергает коллбек. Вызывай свою другую функцию из коллбека display или передавай в первую функцию коллбек(как снизу сделали тебе) или используй цепочку из promise.
спасибо, ребят. Почитаю на learn.javascript про коллбэки- большущий пробел у меня в этом-не понимаю я вас и ваш код понять пока не могу.
коротковат пока мой скилл
$(".post-content .spoiler-head").click(function() {
\t$(this).parent().find(".spoiler-content").slideToggle("fast");
});
Как сделать чтобы и на новые посты он тоже работал?
Гуглится за 0.5 минут
$('.post-content').on('click', '.spoiler-head', function () {
// ...
});
Да всем похуй уже на ангуляр этот, все нормальные поцоны на реакт перешли
Спасибо. Помогло:
$(document).on('click', '.post-content .spoiler-head', function () {
\t$(this).parent().find(".spoiler-content").slideToggle("fast");
});
jQuery
Я нихуя нуб вообще.
Бывший экономист, хочу кодить и рубить бабло.
Получится ли у меня это с JS, или мне податься в PHP?
Готов постепенно учиться, уже начал.
Спизди денег из конторы и вали на канары.
Как там в 90-х? Без js сейчас даже веб-интерфейсы интернет-банков не работают.
И без java, и еще они заставляют заходить только с ИЕ 8.
>What I would recommend instead of Angular.js?
>перечисляет 7 либ, которые нужно использовать вместе
Он не охуел?
http://addyosmani.com/resources/essentialjsdesignpatterns/book/ оригинал
http://largescalejs.ru/ русек
Все так. Многое правится стрикт модом и ES6
Весь цимес в том, что он - автор одной из этих 7 либ!
Лучше zepto+underscore+backbone+marionette.
Хотя кто во времена Энгуляра будет использовать бэкбон?
Нет и пока не может соснуть, т.к. это единственный нормальный фреймворк на js, ну и ExtJS ещё норм. Боли неосиляторов провайдеров фабрик, типа "верните мои нулевые когда я писал портянки на джиквери" никого смущать не должны. Пусть пытаются заменить единственный нормальный фреймворк доступными для их имбицильных мозгов быдлиотеками и убогим говном типа реакта, это их дело. Не обращай внимания.
Такая же тормозная и перегруженная бесполезными 'провайдерами фабрик' ерунда как и ангуляр. Но ты обязан их выучить от корки до корки, иначе будешь объявлен москалем неосилятором и казнен.
Реквестирую так же общих советов о том, с чего начинать человеку, который решил стать крутым контрибьютором
Точнее, есть мелкое приложение на ангуларе (ng-app вместе с html, css и тд, а не просто скрипт) которое лежит отдельно и вполне себе работает. Задумал я его прикрутить к другой, большой страничке, и чтобы не замарачиваться самокопирастией, заинклюдить его в эту самую большуй страничку.
Собственно суть - как заставить ангулар исполнять свой же код из этого файла, а не тащить оттуда только текст
Нужно запилить панель настроек пикрилейтед. При этом, при выборе разных параметров и чекбоксов появляется еще больше настроек и так далее.
Как это лучше всего организовать в коде? У меня получился жуткий говнокод.
Пикрилейтед? Дебил чтоли?
Opera Blink, первый запуск, пикрелейт.
Спасибо, ты молодец.
>Пользователей: 1
На всякий случай отключил. Но исходник-то чист вроде, лол.
Лайв обновления это действительно охуенная фича. Еще бы их абу улучшил немного.
Как узнать высоту СОДЕРЖИМОГО элемента, если это самое содежимое скрыто? Есть у нас div 1x1px, в нем оче много контента. Как с помощью js получить его высоту?
http://it-ebooks.info/tag/javascript/
http://pastebin.com/q1suf1FT
1) Как запустить функцию переданного объекта? В моём примере когда Player вызывает create() ни хуя не происходит, а аддон в хроме подсказывает - "TypeError: undefined is not a function".
2) И объясните как в принципе тут работают референсы типа того, что пытался сделать я. Когда я создал копию Player и передал в него тзис (т.е. сам объект Game), то в эту копию приходит копия передаваемого объекта (т.е. с новым адресом и т.д.) или приходит ссылка на него?
Game это функция конструктор и подразумевается что ты будешь создавать объекты типа var game = new Game() и передавать этот экземпляр дальше в Player(который я так подозреваю тоже должен создаваться через new Player(new Game())
алсо на свою парашу
пысы: куклу ставить не хочу
CSS выучить забыл? Абу специально для тебя на ОП-пост отдельный класс прилепил.
Это копия, сохраненная 9 ноября 2014 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.