welcome-to-js

Welcome to JS   Inside JS »>

Welcome to JS

The best authors and the best JavaScript developers are those who obsess about language, who explore and experiment with language every day and in doing so develop their own style, their own idioms, and their own expression.

Angus Croll, If Hemingway Wrote JavaScript

Take your first steps into programming by learning to read, trace, analyze, and write interactive programs in your browser.

By the end of this module using Just Enough JavaScript you will be able to document, plan and develop programs that process a user’s text input.


Learning Objectives

all of these skills are limited to short, single-page programs written with Just Enough JavaScript

Priorities: 🥚, 🐣, 🐥, 🐔 (click to learn more)
There is a lot to learn in this repository. If you can't master all the material at once, that's expected! Anything you don't master now will always be waiting for you to review when you need it. These 4 emoji's will help you prioritize your study time and to measure your progress: - 🥚: Understanding this material is required, it covers the base skills you'll need for this module and the next. You do not need to finish all of them but should feel comfortable that you could do them with enough time. - 🐣: You have started all of these exercises and feel you could complete them all if you just had more time. It may not be easy for you but with effort you can make it through. - 🐥: You have studied the examples and started some exercises if you had time. You should have a big-picture understanding of these concepts/skills, but may not be confident completing the exercises. - 🐔: These concepts or skills are not necessary but are related to this module. If you are finished with 🥚, 🐣 and 🐥 you can use the 🐔 exercises to push yourself without getting distracted from the module's main objectives. ---

0. Flashcards

Master JS syntax and language structures with flashcards and spaced repetition. You can easily create and edit flashcards in markdown to keep up with your studies.

0. Printables

Handy references to leave open on your computer, or to print and keep under your pillow.

0. Study Lenses

A guide video and examples introducing the Study Lenses learning environment you will use in this module.

0. Studying with LLMs

Some tips and resources for making the most of LLMs in your study. Using LLMs is not necessary for Welcome to JS, you can (and should!) practice all of the exercises without the help of AI.

1. What is Programming

What is a program? What is a programming language? How do programs and people fit together?

2. Just Enough JavaScript

Go in depth on JavaScript you need to know for writing interactive text-based programs in the browser. Along the way you will learn how each language feature works in small programs.

3. Understanding Programs

Learn how to understand a larger programs by finding connections between the details and the big picture. By the end of this chapter you will know how to read a new program and do a simple code review.

4. Developing Programs

Learn to modify and write larger programs in JavaScript. You’ll cover many of the hidden skills necessary to develop quality software and to work collaboratively on a code base.


Setting Up

expand/collapse
> You will need > [NPM](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) and > [nvm](https://github.com/nvm-sh/nvm#installing-and-updating) on your computer > to study this material > > Using a browser with good DevTools will make your life easier: > [Chromium](http://www.chromium.org/getting-involved/download-chromium), > [FireFox](https://www.mozilla.org/en-US/firefox/new/), > [Edge](https://www.microsoft.com/edge), > [Chrome](https://www.google.com/chrome/) 1. Install or update the `study-lenses` package globally - `$ npm install -g study-lenses` (if you do not have it installed) - `$ npm update -g study-lenses` (if you already have it installed) - Didn't work? you may need to try: - (mac) `$ sudo npm install -g study-lenses` - having trouble updating? - try this: `$ npm uninstall -g study-lenses && npm install -g study-lenses` 2. Fork and clone this repository: 1. fork the HackYourFuture repository to your personal account - `git@github.com:HackYourFutureBelgium/welcome-to-js.git` 2. clone your fork to your computer - `git clone --depth 1 git@github.com:HackYourFutureBelgium/.git` 3. when there are updates to the module: 1. update your fork with a PR 2. pull the changes from your fork to your computer 3. Navigate to the module repository in terminal - `$ cd welcome-to-js` 4. Run the `study` command from your CLI - `$ study` 5. The material will open in your default browser, you're good to go! - you can read the `study-lenses` user guide from your browser by navigating to `localhost:xxxx?--help` > If you have a Windows computer and get this error: > > - `... /study.ps1 cannot be loaded because running scripts ...` > > follow the instructions in > [this StackOverflow answer](https://stackoverflow.com/a/63424744), that should > take care of it ; ) --- ## Code Quality Scripts This repository comes with some scripts to check the quality of this code. You can run these scripts to check the code provided by HYF, and to check the code you write when experiment with the examples and complete the exercises. ### `npm run format` This script will format all of the code in this repository making sure that all the indentations are correct, the code is easy to read, and letting you know if there are any syntax errors. ### `npm run spell-check` This script will check all of the files in your repository for spelling mistakes. Spelling is not just a detail, is important! Good spelling helps others read and understand your programs with less effort. `spell-check` is not so clever though, it doesn't have _all_ possible words in it's dictionary and it won't know if you _wanted_ to spell a word incorrectly. If you think one of it's "Unknown word"s is not a problem, you can either ignore the suggestion or add the word to the `"words": [ ... ],` list in [.cspell.json](./.cspell.json). ### `npm run lint:md` This script will [lint](https://en.wikipedia.org/wiki/Lint_%28software%29) all the Markdown files in this repository, checking for syntax mistakes and other bad practices. Fixing linting errors will help you learn to write better code by pointing out your mistakes _before_ they cause problems in your program. Some linting errors will take some practice to understand and fix, but it will be a good use of time. ### `npm run lint:js -- ./path/to/code` Just like `lint:md`, but for `.js` files. This script will lint all of the JS files in this repository, letting you know if there are any syntax errors or bad practices. </details>