Главная страница » Что можно написать на javascript

Что можно написать на javascript

  • автор:

15 идей проектов на JavaScript для начинающих

Самый быстрый способ стать хорошим веб-разработчиком — практиковаться. А работа над большим количеством разнообразных проектов — лучший вид практики.

Photo by Greg Rakozy on Unsplash

Дело в том, что каждый отдельный проект представляет собой уникальную проблему и ее решение. Поэтому чем больше проектов вы создадите, тем больше знаний и опыта наберетесь.

В этот список идей я включил несколько своих любимых проектов для начинающих. Собственно, я сам все это строил, когда приступал к изучению JavaScript. Надеюсь, вам эти проекты принесут такую же пользу, как и мне.

Если, работая над проектом, вам случится застрять — не волнуйтесь: я включил в статью ссылки на соответствующие видеоуроки. В этих видео вы сможете просмотреть решение шаг за шагом.

Но все-таки сначала попытайтесь найти решение самостоятельно, без подсказок. Этот шаг очень важен в становлении разработчика. В программировании нет возможности как-то срезать путь и сразу стать хорошим специалистом. Не будете работать самостоятельно — ваши навыки не улучшатся, сколько бы видео вы ни просмотрели.

Если чувствуете, что информации навалилось слишком много, сделайте перерыв и отдохните. В отдыхе и перезагрузке нуждаются все, даже самые крутые специалисты. Помните, что даже тому разработчику, чьи видео вы смотрите на YouTube, потребовалось долго тренироваться, прежде чем он стал мастером в какой-то теме.

Я также добавлю во все разделы ссылки на готовые проекты. Все они хостятся бесплатно на GitHub Pages. Пройдя по ссылке, вы сможете посмотреть, как должен выглядеть проект, который вам предлагается сделать.

Закончив свой первый проект, вы тоже сможете разместить его на GitHub Pages. Это очень легко сделать, просто следуйте этой инструкции.

Наконец, со времени создания видеоуроков я вносил в проекты некоторые изменения, так что проект в последней версии может слегка отличаться от того, что вы увидите в видео. Последние версии проектов можно найти на GitHub.

1. Hex-цвета

Темы JavaScript, которые вы изучите:

  • манипуляции с DOM
  • структуры данных
  • функции.

Работая над этим проектом, я научился использовать onclick для привязки функции к кнопке. В данном случае функция генерирует рандомный hex-код и делает этот цвет фоновым.

Изучение этой темы было очень полезным, потому что буквально любое современное веб-приложение использует кнопки. Подозреваю, что изученную технику я буду применять снова и снова.

2. Случайные цитаты

Темы JavaScript, которые вы изучите:

  • манипуляции с DOM
  • объекты
  • функции.

Этот проект можно создать разными способами. Но мне было интересно узнать, как это решить с применением объекта — структуры данных, которой незаслуженно нечасто пользуются.

Работая над этим проектом, я также изучил простой алгоритм, отвечающий за генерацию случайной цитаты при клике на кнопку.

3. Карусель изображений

Темы JavaScript, которые вы изучите:

  • манипуляции с DOM
  • управляющие структуры
  • функции.

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

До работы над этим проектом я не был уверен, возможно ли с помощью JS менять стили CSS напрямую, но оказалось, что возможно.

4. Электронные часы

Темы JavaScript, которые вы изучите:

  • манипуляции с DOM
  • структуры данных
  • функции
  • объекты

Работая над этим проектом, я узнал, что при помощи JavaScript можно создать встроенный объект и получать из него время, используя встроенные функции. Это прекрасно, потому что позволяет не пользоваться дополнительными библиотеками.

Я также научился создавать функцию setTimeout. Она используется для постоянного вызова другой функции. В этом проекте она была необходима: обеспечивала правильное обновление времени.

5. Калькулятор

Темы JavaScript, которые вы изучите:

  • манипуляции с DOM
  • функции.

Я просто поверить не мог, насколько просто было создать такое приложение. Я-то думал, что придется каждое выражение прописывать вручную, создавая сложные функции. Но оказалось, что в JavaScript есть функция eval. которая все это делает за нас.

Мне очень понравилось работать над этим проектом. Я даже стили поменял, чтобы добавить что-то от себя.

6. Список покупок

Темы JavaScript, которые вы изучите:

  • манипуляции с DOM
  • функции
  • управляющие структуры
  • слушатели событий.

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

Мы используем слушатель для добавления нового пункта в список покупок, когда пользователь нажимает на кнопку «Добавить», а также для вычеркивания элемента из списка при нажатии на него.

Мне было интересно узнать, как пишется функция, отвечающая за удаление всех элементов внутри div. В данном случае она удаляет все элементы из списка покупок.

7. Калькулятор чаевых

Темы JavaScript, которые вы изучите:

  • манипуляции с DOM
  • функции.

Создать функцию, которая будет высчитывать, сколько чаевых должен заплатить каждый, было довольно просто. Пожалуй, сложнее всего было использовать CSS для создания такого дизайна. Внешний вид приложения вроде бы простой, но воспроизвести его без туториала сложно.

8. Список задач

Темы JavaScript, которые вы изучите:

  • манипуляции с DOM
  • управляющие структуры
  • функции
  • структуры данных.

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

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

9. Флеш-карточки (с локальным хранилищем)

Темы JavaScript, которые вы изучите:

  • манипуляции с DOM
  • функции
  • управляющие структуры.

Прежде всего, это приложение прекрасно выглядит. Кроме того, оно полезное: можно сэкономить на покупке бумажных карточек.

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

В частности, мне особенно понравились опции align-item, flex-wrap и justify-content, поскольку благодаря им мои карточки стали отзывчивыми.

10. Клейкие заметки

Темы JavaScript, которые вы изучите:

  • манипуляции с DOM
  • функции
  • слушатели событий
  • структуры данных.

Код этого проекта очень похож на код проекта с флеш-карточками, но это не беда, потому что наша цель — практиковаться. Конечно, если бы у меня не было того проекта, мне пришлось бы сверяться с видео, чтобы убедиться, что я правильно все делаю.

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

Вообще, этот проект хорош еще и тем, что в нем комбинируются все навыки, приобретенные в предыдущих проектах.

11. Секундомер

Темы JavaScript, которые вы изучите:

  • манипуляции с DOM
  • функции
  • слушатели событий
  • объекты.

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

Для этого проекта мы создаем переменные, содержащие различную информации о времени. Например, когда был старт, когда стоп, насколько отсчет времени останавливался. Без этих переменных и вычислений с ними наш секундомер попросту не сможет показывать, сколько времени прошло.

12. Математика для детей

Темы JavaScript, которые вы изучите:

  • манипуляции с DOM
  • слушатели событий
  • управляющие структуры
  • структуры данных.

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

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

Я старался прийти к решению самостоятельно, но в конечном итоге посмотрел решение в туториале.

13. Unsplash API (генератор картинок)

Темы JavaScript, которые вы изучите:

  • манипуляции с DOM
  • слушатели событий
  • управляющие структуры
  • promises
  • функции
  • Fetch.

Работая над этим проектом, я научился делать API-запросы при помощи fetch.

Кстати, до этого я даже не подозревал о существовании Unsplash API. Мне было любопытно узнать, что многие солидные компании интегрируют этот API в свои сайты.

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

14. Пишущая машинка

Темы JavaScript, которые вы изучите:

  • манипуляции с DOM
  • слушатели событий
  • управляющие структуры
  • promises
  • функции
  • Fetch.

Научиться создавать скрипт для эффекта пишущей машинки было круто. Я видел такой эффект в видеоиграх. Теперь я могу использовать его при создании собственных.

Мне было интересно узнать, что для создания крутых анимаций не всегда нужен CSS. В этом проекте для создания эффекта пишущей машинки используется встроенная функция JavaScript.

15. Квадратные карточки (шаблон)

Темы JavaScript, которые вы изучите:

  • слушатели событий
  • функции.

Работая над этим проектом, я научился открывать YouTube-видео и статьи на сайтах напрямую из JavaScript. Это стало отличным дополнением к моему набору навыков веб-разработчика.

Перевод статьи «15 Beginner JavaScript Projects to Improve Your Front-End Skills!».

Top 15+ JavaScript Projects With Source Code (2023)

JavaScript Projects

JavaScript is one of the web’s most powerful and adaptable programming languages. It powers most websites’ dynamic behavior. JavaScript is a lightweight object-oriented programming language that is used to script web pages by several websites. When applied to an HTML document, it is an interpreted, full-featured programming language that enables dynamic interactivity on websites. It was first released in 1995 to allow users to add programs to web pages in the Netscape Navigator browser.

Since then, all other graphical web browsers have embraced it. Users can use JavaScript to create modern web applications that interact immediately, without having to reload the page every time. JavaScript is used on a standard website to provide many sorts of interactivity and simplicity. Companies are continuously looking for experienced JavaScript Developers who can create unique GitHub JavaScript projects. Working on some real-time JavaScript projects is the best thing you can do if you’re a JavaScript programming newbie.

Let’s have a quick look at some features of JavaScript:

Confused about your next job?

  • Because it has built-in execution environments, all popular web browsers support JavaScript.
  • The grammar and structure of JavaScript are based on the C programming language. As a result, it is classified as a structured programming language.
  • JavaScript is an object-oriented programming language that inherits through prototypes rather than classes.
  • It’s a simple and interpreted language.
  • The language is case-sensitive.
  • JavaScript is compatible with a variety of operating systems, including Windows, macOS, and Linux.
  • It gives consumers complete control over their web browsers.

If you’re seeking JavaScript practice projects, we’ve compiled a list of JavaScript project ideas you can get started on right now (whether you’re looking for JavaScript projects for beginners, intermediate programmers, or experienced coders). This is an excellent compilation of projects for both beginners and advanced users. Follow the project link when you locate a JavaScript project that catches your interest and is at par with your skill level. The source code for each of these open-source JavaScript projects has been provided in this article for you to use as a reference.

JavaScript Projects Ideas (2023)

Below are a few exciting JavaScript Projects to try. We have divided projects based on beginner, intermediate, and advanced levels.

JavaScript Projects for Beginners

1. JavaScript Calculator

Calculators are fun, so, to begin with, we will build a simple Calculator using JavaScript. We’ll utilize fundamental JavaScript functions to make all the components work, as well as simple HTML and CSS. We’ll use HTML to display buttons and numbers, and CSS to make them more appealing. Furthermore, we’ll utilize JavaScript to make the buttons do their jobs.

The source code link of a simple JavaScript Calculator is given below-

2. Build a Clock using JavaScript

Who does not use a clock? It would be great if you can build a clock using JavaScript. There’s a good possibility you’re on a webpage or using a web application that has a self-updating time component (like a clock), and it’s powered by JavaScript code. This implies that JavaScript clocks aren’t just useful for creating JavaScript projects; they also allow you to practice the type of work you’ll be doing as a JavaScript developer. The source code of a very nice and interactive clock has been provided below for your reference.

3. Hex Color Application

With this basic hex colors application, you can make the web a little prettier. With a single button press, this software changes the backdrop color and shows the color’s hexadecimal value on the screen. Pretty simple, ain’t it?

You can learn how to utilize click to connect a function to a button while working on this project. In this project, a function was to generate a random hex color and set it as the backdrop color. Since practically every modern web application includes buttons, learning this would be beneficial.

4.Random Quote Generator

Quote Generator

Quote Generator

If you’re looking for some inspiration, we’ve got you covered. You’ll make an app that displays random famous quotes every time a button is pressed in this project. A quote from a prominent athlete, politician, or historical figure can be displayed:

To finish this project, you’ll need to know fundamental JavaScript syntaxes, such as variables, loops, and object literals. This project will allow you to practice fundamental JavaScript skills in a fun and effective way. It also includes a small interactive portfolio piece that you may use to demonstrate your knowledge of JavaScript.

5. Tip Calculator

Tip Calculator

Tip Calculator

With this tip calculator, you won’t have to look around the table to determine who’s responsible for the tip. This tip Calculator is made with JavaScript, HTML, and CSS to help you figure out how much to tip at restaurants when the need arises. The design might seem simple but is quite hard to implement.

6. Timer

Timer

Timer

Building a simple timer turns out to be more difficult than it appears. One would expect that displaying the proper time would be as simple as utilizing the same setInterval method as in the digital clock project. It turns out that the method doesn’t work in this case. We establish variables to hold various time-related information for this project, such as when the time was begun, when the time was stopped, and how long the time was paused. Our digital clock would simply be unable to display the time elapsed without these variables and the calculations we conduct with them.

So, what are you waiting for? Let’s build our timer using JavaScript. Ready, Set, Go.

7. Grocery List

Grocery List

Grocery List

Hungry? Let’s go some grocery shopping with our grocery list. This is a cool app using which you can keep a list of items you need to buy, you just have to add the items needed. You can also delete the item/items which are not required.

8. BMI Calculator

BMI Calculator

BMI Calculator

You can create BMI Calculator for all the fitness freaks out there. The BMI Calculator takes your height and weight as input and gives BMI (Body Mass Index) as an output. The source code link of a BMI calculator is provided below.

Intermediate JavaScript Projects With Source Code

9. Happy Bouncing Balls

Using HTML, CSS, and JavaScript, a bouncing ball may be generated, and some bouncing actions can be performed on it. Seeing the colored dancing balls around the screen might actually make someone happy.

A link for the GitHub source code of the project is given below.

10. JavaScript Form Validation

JavaScript Form Validation

JavaScript Form Validation

Many websites utilize form validation for client-side validation of user details, card details, address details, and other information. If a mandatory input field name exists, the user can type a number, leave the field blank, type only one letter, and so on. All of these validations are simple to implement using JavaScript. Let’s look at an example of a simple form validation project. HTML elements will be required as well, as is customary.

11. Guess the number game

Guess the number game

Guess the number game

The objective of this fun game is to code a game where the user must guess a randomly generated number between 1 and 100. You, too, can build this game. The source code for the project is provided below.

12. Whack-a-mole game

I think everyone has once in his lifetime played this game. A standard Whack-A-Mole machine has a waist-level cabinet with a play area and a display screen, as well as a huge, soft black mallet. Five holes in the top of the play area are stuffed with small plastic moles that appear at random. Whacking each mole as it appears earns you points. The higher the score, the faster the reaction. To create this game, one has to keep in mind these functions-

  • A function that generates a random length of time for the mole to peep.
  • A function that selects a random hole for the mole to peep from.
  • Using the two functions above, create a function to make the mole emerge out of the random hole.
  • A start-up function for the game.

The objective of this project is to create a Whack-a-mole game using JavaScript. The source code has been given below.

13. Rock Paper Scissors game

Rock Paper Scissors game

Rock Paper Scissors game

Anyone who has not been living under the rocks must have heard about the game Rock Paper Scissors game. Rock paper scissors is a classic two-person hand game in which each participant forms one of three shapes with their outstretched hand at the same time. Wouldn’t it be nice if we can implement it using JavaScript? The project given below is a simple DOM (Document Object Model) rock scissors paper project.

Advanced JavaScript Projects With Source Code

14. Real-time Weather app

This project will show you how to create a weather app using Vanilla JS, HTML, and CSS. For getting meteorological information, the instructor uses the Dark Sky API, which is a terrific opportunity for you to learn how to communicate with APIs, which is another great thing you can do with JavaScript. The only issue you might have is figuring out how to use JavaScript to interact with an API. But believe me when I say that won’t be an issue.

In this app you’re going to make: our weather app will display weather data from the API like this: an icon that represents the current weather status, the temperature value (18°C) in Celsius units, the weather description (clear sky), and finally the user’s city and country (London, GB).

The temperature value will be converted from Celsius to Fahrenheit when the user clicks on it.

15. Movie App

Movie

This is a movie app made with HTML, CSS, JavaScript, jQuery, and Bootstrap using API calls from The Movie Database. It uses API calls to get movies from The Movie Database. Users can view the most popular movies, arrange them by genre, or use the search function to find other titles.

16. Real-Time Chat Application

How about we build our own chat application? We’ll make a full-fledged real-time chat application. On the front end, we’ll use React, and on the back end, we’ll utilize NodeJS and the Socket.io web socket library. By the end of this project, you’ll know how to use web sockets and Socket.io to send and receive messages in order to create any real-time application.

Covered topics: React.js, Node.js, Express.js, and Socket.io.

17. File Sharing App

File Sharing app

File Sharing app

You need a file-sharing app every time you want to share files from one device to the other. This is a demonstration app that illustrates how to utilize the Virgil Crypto Library in JavaScript to construct a secure file-sharing app. You will be able to download, decrypt, and view encrypted media files from a browser after completing the procedures in the setup section.

18. Instagram Clone

InstagramInstagram

Instagram is a famous social media site used to share photos. After completing this project, you will be able to create a perfect clone of Instagram. However, there is a challenge. Users should be able to enjoy features comparable to those found on Instagram. For instance, image upload, tagging, and likes.

The source code given below is of an Instagram clone. This app features all the latest tools and practices in web development-

  • React JS — A JavaScript library for building user interfaces
  • Node JS — A web framework for Node JS
  • Postgres — A cross-platform and open-source document-oriented database
  • Redis — A platform for caching
  • JWT — A library for authentication of users
  • Context — A state handler

JavaScript projects: Why are they so important?

The fact that JavaScript is currently used by 94.5 percent of all websites demonstrates its relevance as a web technology. JavaScript is a client-side programming language that allows web developers to write customized client-side scripts to make web pages more dynamic and interactive. At the same time, developers can create server-side code in JavaScript using cross-platform runtime engines like Node.js. They can even integrate JavaScript, HTML5, and CSS3 to produce web pages that are compatible with all browsers, platforms, and devices. There are a number of other reasons why any modern web developer should be familiar with JavaScript and how to take advantage of all of its features.

JavaScript’s skills may lead to a variety of hard and exciting employment opportunities, such as designing mobile and desktop apps, creating dynamic websites from scratch, working as a UI/UX designer, or even working as a full stack developer. If you know the fundamentals of JavaScript, projects are the next logical step in boosting your resume’s star rating. If you have no prior programming knowledge, you can enroll in some fundamental JavaScript classes and then return to these projects. Most JavaScript projects with the source code listed above will be understandable if you know a little HTML and CSS.

Conclusion

We have suggested some JavaScript projects categorized into beginner level, intermediate level, and advanced level projects. These projects will enhance your JS skills and will add a lot of value to your portfolio. They cover practically all of the major JavaScript principles.

Frequently Asked Questions

Q. What kind of project is JavaScript used for?
JavaScript is a programming language primarily used by developers to create dynamic and interactive web projects.

Q. Where can I get JavaScript projects?
We have recommended some great JavaScript projects in this article along with their source code links. You can also explore some great projects on GitHub.

Q. How do I start a project in JavaScript?
If you are a beginner in JavaScript, start with learning the language first. After you have learned the language to its perfection, you can try to create a beginner-level project with JavaScript. If you already know the language, then you can try to build an advanced-level project in JavaScript language.

Q. Is JavaScript that difficult?
No, JavaScript is not that difficult. You can easily get the hang of it.

30 сайтов-примеров отличного использования JavaScript Статьи редакции

Ресурс Creative Bloq опубликовал материал, в котором его авторы поделились с читателями лучшими, на их взгляд, примерами использования JavaScript для создания сайтов. ЦП выбрал 30 самых интересных ресурсов.

С помощью JavaScript, утверждают авторы статьи, можно создавать запоминающиеся платформы, на которые пользователь захочет вернуться. Язык позволяет разрабатывать игры, сайты, API и многое другое.

Портфолио веб-дизайнера Майка Куса выполнено в «чистой и сдержанной манере», пишут редакторы Creative Bloq. В нём большие изображения сочетаются с простыми элементами пользовательского интерфейса.

«Я думаю о своих работах, как о бренде. Нет никакой необходимости добавлять в мой сайт лишние элементы дизайна», — говорит Кус.

В портфолио Куса одинаково легко ориентироваться на всех типах экранов — он отмечает, что добиться такого эффекта было сложнее всего. Каждый из проектов дизайнера представлен изображением или фотографией — такой, чтобы пользователю захотелось узнать о работе больше.

Сайт креативного агентства Hello Monday претерпел значительные изменения, замечают авторы статьи. Разработчиками компании была проделана огромная работа. Им удалось сделать интерфейс дружелюбным для пользователя.

Теперь на сайте представлены примеры уже выполненных агентством заказов — у каждого проекта есть своя страница, на которой описана его история, что даёт пользователю более глубокое понимание, чем занимается Hello Monday.

«Мы пытались отойти от шаблонного представления о том, как должен выглядеть сайт креативного агентства», — рассказывает Кэти Хертел, руководитель проекта по редизайну веб-страницы Hello Monday. Авторы материала находят сайт очень привлекательным и отзывчивым, чему способствует организация проектов на главной странице: она автоматически дополняется новыми работами агентства при прокрутке вниз.

Multeor — это многопользовательская онлайн-игра, написанная на JavaScript с использованием элемента canvas HTML5. Она разработана Арьеном де Врайзом и Филидором Вайзе, а спроектирована Артуром ван Хугом. Основная задача пользователя в игре — контролировать падение метеоритов, получая очки за оставленные им разрушения.

Игра использует Node.js-сервер для управления связью между настольными и мобильными устройствами с помощью WebSockets.

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

Мы писали всё сами — это было очень увлекательно, к тому же, мы узнали много нового. То, что мы не зависели от конкретных сборок и префабов, дало нам определённую свободу действий: не нужно было заниматься рендерингом существующей графики, обработкой коллизий и отдельно описывать систему, отвечающую за взрывы.

Crime Timelime — агрегатор, собирающий данные о преступности в Великобритании с помощью публичных API. Он позволяет пользователям узнать, как обстоят дела в их регионе.

«Мы организовали сайт таким образом, чтобы он показывал карту региона и места совершения преступлений — за месяц, выбранный пользователем на панели снизу», — говорит разработчик проекта Алекс Миллер.

Ресурс использует API Google Maps, для создания панели с месяцами применялись jQuery и jQRangeSlider. Когда пользователь взаимодействует с картой — например, щелкает мышкой в определенное место на ней, сайт обновляет изображение с помощью JavaScript. «Пузырьки», показывающие количество преступлений, были созданы с помощью CSS и анимированы с помощью jQuery.

На сайте Here is Today язык JavaScript использовался для создания анимации. Создатель ресурса, дизайнер Люк Твимэн, так объясняет свою идею: «Я хотел создать что-то, что дало бы каждому человеку ощущение масштаба времени. Here is Today помогает понять, насколько обширна история вселенной».

Твимэн отмечает, что он с самого начала решил отказаться от стандартных величин измерения — пикселей, и описал собственные, основываясь на размерах экрана. Это было сделано для того, чтобы сайт выглядел одинаково на всех устройствах.

Это второй проект на JavaScript, созданный дизайнером, и в нём он применил элементы, которые не использовал в предыдущем. Однако Твимэн находит в языке множество сходств с другими высокоуровневыми языками программирования, к тому же, по его словам, JavaScript имеет довольно подробную документацию, а в интернете (в том числе на тематических формах) разобрано большое количество примеров.

Tweetmap изображает на страны на карте пропорционально количеству отправленных из них твитов. Разработчик сервиса Роб Хоукс перечисляет несколько технологий, использованных при его создании: TopoJSON, D3.js, Node.js, PhantomJS, и специальные алгоритмы построения смежных картограмм в режиме реального времени.

Мы выбрали Node.js, потому что у нас уже был опыт его использования, и потому что это простая, быстрая и гибкая платформа. Для анимации карты (в формате TopoJSON) мы используем D3 — фантастическую библиотеку для визуализации данных. В частности, мы широко применяем модуль geo, который позволяет делать сложные географические расчеты и преобразования.

Чтобы избежать проблем с представлением карт в браузере клиента, система генерирует карты на сервере с помощью D3, запускает и рендерит их с помощью движка PhantomJS, и только потом передаёт пользователю — это позволяет не создавать «дыр» при показе карт.

The Trip — интерактивный фильм, созданный с помощью JavaScript и HTML5 (без использования Flash). Отто Наскарелла, создатель проекта, считает, что задача разработки подобного сервиса оказалась очень сложной:

Большинство трудностей, с которыми мы столкнулись, были связаны с тем, что HTML5 на момент написания сайта не имел средств для кросс-браузерной разработки. Тогда мы решили, что будем рекомендовать клиентам использовать Chrome.

Код сайта на JavaScript использует jQuery практически для всех задач. Разработчики также применяли TextBlur и TextDrop — для размытия и анимации текста.

Эта страница, написанная на JavaScript — новое портфолио и блог дизайнерского и маркетингового агентства Si Digital. Ведущий разработчик проекта Алекс Крук так объясняет анимацию на главной странице: «Жидкость, движущаяся по трубам, ведёт пользователей по нашему портфолио — она активирует анимацию изображений на каждом из этапов исследования сайта клиентом».

Для достижения подобного эффекта Крук применил метод jQuery.animate(). К тому же, добавляет он, нужно было правильно выбрать скорость заполнения жидкостью труб — ведь все читают с разной скоростью.

Интерактивный график на странице с описанием выполненных проектов и команды агентства, реализован с помощью jQuery. Временная шкала, по словам Крука, генерируется динамически — на основе информации из базы данных, с использованием технологии Ajax.

Жан Хальфстейн — веб-дизайнер. В его портфолио авторов статьи больше всего привлекла главная страница — и анимация на ней. «Я действительно неплохо провёл время, пока возился с различными эффектами. Я очень люблю использовать новые технологии, так что решил сделать основную страницу своего сайта своеобразной песочницей — там я развлекаюсь с Three.js и элементом canvas HTML5», — рассказывает Хальфстейн.

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

По словам Джонса, когда он разрабатывал сайт, у него было больше опыта в работе с Flash, чем с JavaScript, но ему захотелось попробовать что-нибудь новое — чтобы понять, на что он способен. «Я сразу понял, что синтаксис JavaScript почти такой же, как синтаксис ActionScript — поэтому очень скоро полностью освоился», — описывает процесс написания кода Джонс.

Джонс вспоминает, что Flash не давал ему доступа к работе с движениями мыши — это был новый опыт, который ему очень понравился. Разработчик хотел добиться такой отзывчивости сайта, которой он не мог достичь, используя переходы между классами в CSS. Джонс доволен достигнутым результатом:

Если вы собираетесь перейти с ActionScript на JavaScript, не медлите ни секунды. Делая свой сайт, я хотел понять, способен ли JavaScript на то, на что способен Flash. И я очень впечатлён.

MapsTD — онлайн-игра, суть которой заключается в обороне крепости. Крепость — это собственный дом пользователя, который он должен защищать от злодеев, неустанно бродящих по улицам района.

Создатель проекта Дункан Барклай объясняет, как это работает: «Мы использовали API Google Maps, MooTools и JavaScript. Самая сложная часть — поиск маршрута, которым будут следовать враги пользователя. Как только игрок выбрал начальную точку, сервис осуществляет поиск долготы и широты, и вычисляет возможные пути c помощью Google».

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

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

Ресурс Glimpse разработан совместно командой Windows IE и проектом TheFind, и соединяет в себе систему поиска TheFind и приложение тех же разработчиков для онлайн-шопинга на Facebook. В рамках Glimpse программисты выпустили собственный фреймворк, основанный на Turn.js.

Целью команды с самого начала было сделать из Glimpse веб-приложение, а не обычный сайт. Разработчики использовали парадигму «модель-представление-поведение», которая разделяет на три отдельных компонента модель данных, пользовательский интерфейс и взаимодействие с клиентом. Сервис применяет шаблоны рендеринга моделей на стороне клиента Thrift или JSON — в зависимости от вычислительной мощности клиента.

Библиотека Turn.js также использовалась при разработке каталогов. С помощью CSS и JavaScript моделям, представленным на сайте, придаётся объём — за счет наложения теней на изображение.

RBMA Radio использует инструмент Modernizr, который позволяет вести кросс-браузерную разработку на HTML5 и CSS. Modernizr постоянно обновляется, так что создатели сайта могут улучшать код по мере представления новых возможностей.

Кроме того, при реализации сервиса применена библиотека Backbone.js — с помощью неё подгружаются плитки для создания эффекта бесконечной страницы.

Nouvelle Vague — сайт от французского дизайнерского агентства Ultranoir. Сервис позволяет «отслеживать» твиты по заданному хештегу. Он реализован с помощью JavaScript, WebGL и HTML5. HTML5, правда, отвечает только за тизер при открытии ресурса.

Один из разработчиков агентства рассказал, что на создание сайта ушло четыре месяца, а трудились над ним три человека. «Нам было очень интересно попробовать поработать с WebGL», — объясняет он.

Основная цель проекта заключалась в том, чтобы при помощи 3D-изображений воссоздать атмосферу из видеозаставки. Команда погрузилась в новые технологии HTML5, CSS3 и JavaScript, и считает, что эти языки могут стать стандартами для работы с 3D в будущем — из-за качественного рендеринга, богатых возможностей взаимодействия и реагирования.

The Convergence — браузерная игра, своей ретро-графикой напоминающая Super Mario Bros. Она демонстрирует потрясающие возможности JavaScript и HTML5 и доказывает, что HTML5 справляется со своими задачами ничуть не хуже, чем Flash.

Разработчики обещают в будущем добавить в игру аудиосопровождение и новые уровни, а также поддержку Mozilla Gamepad API.

Это веб-приложение превращает слова «купите один раз, читайте на всех устройствах» в реальность. Оно использует технологии HTML5, JavaScript API, библиотеки jQuery и jQuery UI и несколько плагинов jQuery, в том числе jScrollPane для прокрутки страниц и jQuery Templates. Кроме того, команда разработчиков воспользовалась WebSQL для поддержки офлайн-режима.

Сайт, запущенный студией WeFail, считают авторы заметки, выглядит страшновато, но всё равно очень круто. Ресурс выполнен в довольно резком стиле. JavaScript используется для анимации при взаимодействии пользователя и системы. Чтобы прокручивание осуществлялось только для отдельных элементов интерфейса, командой был применён плагин jQuery ScrollTo. Для появления видео не во всплывающих окнах, а прямо на сайте использовалась библиотека Shadowbox.js.

Кроме того, в коде Les Enfants применяется плагин jQuery Cycle — он отвечает за отображение картинок и примеров работ агентства.

«Мы запустили Les Enfants, чтобы понять, какие возможности по производительности имеются у JavaScript. Оказалось, что в сочетании с СSS Transform можно добиться отличных результатов», — говорит разработчик Мартин Хью.

Не так давно, отмечает Хью, подобные вещи можно было создавать только при помощи Flash, но теперь у него есть жизнеспособная альтернатива — JavaScript.

Pinterest — яркий пример использования JavaScript для создания эффекта бесконечной страницы. Для создания сайта понадобились инструменты jQuery, jQuery UI и плагин PageLess.

Как считают авторы заметки, PageLess жизненно важен для Pinterest, потому что бесконечная прокрутка и прогрузка новых пинов гораздо эффективнее помогает удерживать внимание пользователя, чем социальные функции — например, комментирование записей.

Love Bobm Builder помогает пользователям выразить свою любовь или благодарность кому-либо. Это аккуратный и простой сайт, который позволяет создать и отправить послание-бомбу.

Ресурс иcпользует инструмент Modernizr для своевременного обновления кода на JavaScript и HTML5.

Когда пользователь попадает на сайт, первым делом он видит так называемый «прелоадер» — может показаться, что он выполнен при помощи Flash, но это не так. За наполнение стакана пивом по мере загрузки отвечает HTML5 и JavaScript.

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

Нажимая на маски животных, клиент отправляется к другим сценам — все анимационные эффекты в которых исполнены при помощи jQuery.animate().

Trello — приложение для совместного или индивидуального планирования, в котором пользователи могут создавать списки выполненных и невыполненных задач и делиться прогрессом в режиме реального времени. Сайт разработан с использованием Node.js, MongoDB и Backbone.js.

Один из создателей Trello Даниэль ле Черминан поясняет, что применение только одного языка при написании сайта помогает новым членам команды быстрее влиться в процесс разработки.

Общение между пользователями реализовано с помощью Web Sockets — ле Черминан отмечает, что это достаточно новая технология, поэтому при её настройке возникали некоторые сложности.

Это игра в ретро-стиле, созданная студией Little Workshop, призвана продемонстрировать возможности HTML5, JavaScript и, в особенности, Web Sockets. Он может одновременно поддерживать взаимодействие между тысячами пользователей.

«Создание многопользовательской игры — отличный способ продемонстрировать, как такие технологии могут работать вместе. BrowserQuest опирается на серверы Node.js, каждый из которых может запустить несколько экземпляров игрового мира», — рассказывает разработчик студии Гийом Лекольне.

JS1k — ежегодный конкурс, задача участников которого создать страницу на JavaScript на заданную тему (чаще всего — анимированные изображения). Её вес не должен превышать 1 КБ.

Работа победителя 2012 года Филиппа Бучанана изначально весила 8 КБ — но за день Филипп смог сократить её размер до требуемого 1 КБ, оптимизировав алгоритм генерации дерева.

Моей тактикой был «честный обман» компилятора. Например, использование конструкции «a ? b : c» вместо «if (a) b else c» экономит 8 байтов.

Сервис помогает пользователям создавать таймлайны, и он очень прост в использовании. В интерактивную шкалу можно включать твиты, видео, фотографии и аудиозаписи. Свой таймлайн можно описать с помощью JSON или Google Docs — как удобнее самому клиенту.

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

Для создания игры использовались jQuery и библиотека для работы с векторной графикой Raphal.js. Реализация проекта с помощью Raphal помогла разработчикам избежать проблем с производительностью на большинстве устройств и во всех браузерах.

Рекламный сайт сети пекарен Panera Bread был создан агентством Luxurios Animals. Технический директор студии Дэн Федермен говорит, что разработчики с самого начала решили реализовывать проект на CSS3 там, где это возможно, а для всего остального использовать JavaScript.

Анимация с помощью CSS3 обеспечивает плавность переходов на всех типах устройств. Кроме того, команда воспользовалась библиотекой Hammer.js для обработки прикосновений, Backbone.js для создания моделей данных, плагинами jQuery Transit и Isotope и HTML.

Peanut Gallery — проект, реализованный Google Creative Lab. Сайт позволяет пользователям добавлять озвучку в «немые» короткометражки с при помощи микрофона. Ресурс использует Google Speech API и JavaScript API — они помогают интегрировать распознавание речи в веб-приложения.

Валден Кламп, один из разработчиков проекта, выделяет на его взгляд интересную особенность Google Speech API — динамического распознавание речи. Например, если англоязычный пользователь начинает произносить «European Union», то сначала распознаётся слово «your» или «year» и лишь под конец оно преобразовывается в «European». Ещё одна полезная возможность — распознавание знаков препинания. Словосочетания «вопросительный знак», «восклицательный знак» и другие автоматически превращаются в соответствующие им пунктуационные знаки.

«Интерактивное ухо» создано агентством Epiphany Solutions для своего клиента Amphilon, который специализируется на слуховых аппаратах и других решениях для слабослышащих людей. Ресурс ориентирован на детей возраста младшей и средней школы. Сайт состоит из трёх «витрин», демонстрирующих, как устроено человеческое ухо.

Создатель проекта Брайан Джеймс отмечает, что благодаря использованию JavaScript, HTML5 и CSS команда смогла достичь максимальной производительности даже в устаревших и неподдерживаемых браузерах. Анимации при исследовании уха с помощью лупы — это GIF-изображения.

Violin — инструмент для визуализации кода на JavaScript. Он показывает, как части приложения взаимодействуют друг с другом в режиме реального времени. Сам сайт выполнен на JavaScript с использованием библиотеки D3.js для построения графиков.

Сайт британской писательницы Филиппы Грегори, автора романа «Ещё одна из рода Болейн», выполнен по её заказу агентством Better. Основной задачей разработчиков являлась оптимизация площадки для всех видов устройств. Ресурс построен на базе FuelPHP CMS. JavaScript отвечает за пользовательский интерфейс, интерактивность и плавность переходов на сайте.

Проекты на JavaScript для ознакомления

Представляю вашему вниманию подборку из 22 проектов на чистом или, как еще говорят, ванильном JavaScript (лично я предпочитаю просто JavaScript).

Для меня это своего рода промежуточный итог в изучении JS.

Код написан в разное время, поэтому выглядит по-разному и имеет разный уровень сложности.

Большинство проектов нельзя назвать полноценными приложениями, однако каждый из них успешно решает поставленную задачу.

Код проектов находится ЗДЕСЬ.

Формат будет следующим: название проекта, его краткое описание, песочница.

По некоторым проектам имеются отдельные статьи. По другим, возможно, когда-нибудь появятся.

1. Audio Progress and Visualization

Приложение для воспроизведения и визуализации аудио данных с помощью Web Audio API и Canvas API.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *