<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Javascript on POPWEB</title>
    <link>https://pop-web.github.io/categories/javascript/</link>
    <description>Recent content in Javascript on POPWEB</description>
    <generator>Hugo</generator>
    <language>ja</language>
    <lastBuildDate>Tue, 04 Jan 2022 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://pop-web.github.io/categories/javascript/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>window.top === window.selfは何をしているのか？</title>
      <link>https://pop-web.github.io/programming/javascript/window-top-window-self/</link>
      <pubDate>Tue, 04 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://pop-web.github.io/programming/javascript/window-top-window-self/</guid>
      <description>&lt;p&gt;プロジェクトで「if (window.top === window.self) {…}」という条件式を初めて見たので、その意味を調べてみました。&lt;/p&gt;
&lt;p&gt;この条件式は、開いているページがiframeで読み込んだページを表示しているかどうかを判定するためのものです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【JavaScript】プリミティブ型（基本型）とオブジェクト型（参照型）について</title>
      <link>https://pop-web.github.io/programming/javascript/primitive-object/</link>
      <pubDate>Sat, 16 Oct 2021 00:00:00 +0000</pubDate>
      <guid>https://pop-web.github.io/programming/javascript/primitive-object/</guid>
      <description>&lt;p&gt;JavaScriptにのデータ型には、プリミティブ型（基本型）とオブジェクト型（参照型）がある&lt;/p&gt;
&lt;h2 id=&#34;プリミティブ型基本型&#34;&gt;プリミティブ型（基本型）&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;真偽値（boolean）
数値（number）
文字列（string）
null
undefined
シンボル（symbol）
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;オブジェクト型参照型&#34;&gt;オブジェクト型（参照型）&lt;/h2&gt;
&lt;p&gt;プリミティブ型（基本型）以外のデータ型&lt;/p&gt;</description>
    </item>
    <item>
      <title>eslintのルールで特定ファイルのみ適用外にしたい場合の書き方</title>
      <link>https://pop-web.github.io/programming/javascript/eslint-overrides/</link>
      <pubDate>Fri, 28 May 2021 00:00:00 +0000</pubDate>
      <guid>https://pop-web.github.io/programming/javascript/eslint-overrides/</guid>
      <description>&lt;p&gt;.eslintrcのrulesに「defalut export」の記述を禁止するルールを追加したとする。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;module.exports = {
...
  rules: {
...
    &amp;#34;import/no-default-export&amp;#34;: &amp;#34;error&amp;#34;,
...
  }
};
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;このとき、sotrybookのstories.tsxにはこのルールは適用外にしたい。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【JavaScript入門】reduceについて説明と使い方</title>
      <link>https://pop-web.github.io/programming/javascript/javascript-reduce/</link>
      <pubDate>Tue, 26 Jan 2021 00:00:00 +0000</pubDate>
      <guid>https://pop-web.github.io/programming/javascript/javascript-reduce/</guid>
      <description>&lt;p&gt;reduce()の説明と使い方を説明する。&lt;/p&gt;
&lt;p&gt;reduce()は、配列の隣り合う値に対して関数を適用させて、その実行結果を返すメソッド。&lt;/p&gt;
&lt;p&gt;コードを書いて動きを確認してみる。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【コンソールエラーの原因】front.js:8 Uncaught ReferenceError: browser is not defined at HTMLDocument.&lt;anonymous&gt;</title>
      <link>https://pop-web.github.io/programming/javascript/browser-is-not-defined-at-htmldocument/</link>
      <pubDate>Fri, 29 May 2020 00:00:00 +0000</pubDate>
      <guid>https://pop-web.github.io/programming/javascript/browser-is-not-defined-at-htmldocument/</guid>
      <description>&lt;p&gt;Google Chromeのデバッグコンソールに以下のようなエラーが出た。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;front.js:8 Uncaught ReferenceError: browser is not defined at HTMLDocument.&amp;lt;anonymous&amp;gt; (front.js:8)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;色々調べた結果、今回の場合は&lt;strong&gt;Google Chromeの拡張機能が原因&lt;/strong&gt;だった。&lt;/p&gt;</description>
    </item>
    <item>
      <title>JavaScript（ES2015）アロー関数の省略の書き方とthisの束縛について</title>
      <link>https://pop-web.github.io/programming/javascript/arrow-function/</link>
      <pubDate>Sat, 09 May 2020 00:00:00 +0000</pubDate>
      <guid>https://pop-web.github.io/programming/javascript/arrow-function/</guid>
      <description>&lt;p&gt;ES2015（ES6）から追加されたアロー関数だが、省略した書き方が色々あるのでまとめてみる。&lt;/p&gt;
&lt;h2 id=&#34;アロー関数の基本形&#34;&gt;アロー関数の基本形&lt;/h2&gt;
&lt;p&gt;アロー関数は基本的には、無名関数（匿名関数）の省略記法で、その名の通り&lt;code&gt;=&amp;gt;&lt;/code&gt;を使って関数リテラルを定義する。&lt;/p&gt;</description>
    </item>
    <item>
      <title>npm installしたがキャッシュとパッケージ（node_modules）を削除して再インストールする方法</title>
      <link>https://pop-web.github.io/programming/javascript/npm-install-cache-clean/</link>
      <pubDate>Fri, 01 Nov 2019 00:00:00 +0000</pubDate>
      <guid>https://pop-web.github.io/programming/javascript/npm-install-cache-clean/</guid>
      <description>&lt;p&gt;npm installでパッケージをインストールしたが、再インストールして入れなおすには以下のようにする。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;npm cache clean
rm -rf node_modules/
npm install
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>【JS初心者向け】async/awaitのついて解説</title>
      <link>https://pop-web.github.io/programming/javascript/async-await/</link>
      <pubDate>Fri, 13 Sep 2019 00:00:00 +0000</pubDate>
      <guid>https://pop-web.github.io/programming/javascript/async-await/</guid>
      <description>&lt;p&gt;前回記事の&lt;a href=&#34;https://blog.popweb.dev/programming/javascript/js-promise/&#34;&gt;Promiseについて解説&lt;/a&gt;の続きで、今回はasync/awaitについて解説していく。&lt;/p&gt;
&lt;p&gt;async/awaitを使うことで、前回に解説したPromiseの処理を同期的な記述で簡潔に書けるようになる。&lt;/p&gt;
&lt;h2 id=&#34;asyncとawaitと使う&#34;&gt;asyncとawaitと使う&lt;/h2&gt;
&lt;p&gt;Promiseインスタンスを返してくれるgetHello( )がある。前回のPromiseではこの関数にthenメソッドを繋いであげれば、非同期処理後の処理の記述ができた。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【JS初心者向け】Promiseについて解説</title>
      <link>https://pop-web.github.io/programming/javascript/js-promise/</link>
      <pubDate>Fri, 06 Sep 2019 00:00:00 +0000</pubDate>
      <guid>https://pop-web.github.io/programming/javascript/js-promise/</guid>
      <description>&lt;p&gt;前回の&lt;a href=&#34;https://blog.popweb.dev/programming/javascript/js-callback/&#34;&gt;「コールバック関数について解説」&lt;/a&gt;の続き。&lt;/p&gt;
&lt;p&gt;非同期処理の際にコールバック関数を使うのは有効であるが、コールバック地獄に陥りやすいデメリットがある。&lt;/p&gt;
&lt;p&gt;コールバック地獄対策として非同期処理を簡潔に書けるようにしたのが、&lt;strong&gt;Promise&lt;/strong&gt;である。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【JS初心者向け】コールバック関数について解説</title>
      <link>https://pop-web.github.io/programming/javascript/js-callback/</link>
      <pubDate>Thu, 05 Sep 2019 00:00:00 +0000</pubDate>
      <guid>https://pop-web.github.io/programming/javascript/js-callback/</guid>
      <description>&lt;p&gt;JavaScriptをやっていて、「async/await」ってなんやって思って、ググったら「Promise」の進化版ってことらしい。&lt;/p&gt;
&lt;p&gt;今度は「Promise」をググったら、コールバック関数の概念が必要ってことが分かった。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【初心者向け】JavaScriptモジュール使い方（import/export/export default）</title>
      <link>https://pop-web.github.io/programming/javascript/javascript-module/</link>
      <pubDate>Fri, 30 Aug 2019 00:00:00 +0000</pubDate>
      <guid>https://pop-web.github.io/programming/javascript/javascript-module/</guid>
      <description>&lt;p&gt;JavaScriptのモジュールとは、そのままで部品というイメージ。&lt;/p&gt;
&lt;p&gt;JavaScriptで書いたファイルを部品として、他のファイルに取り込むことで機能を拡張することができるのがメリット。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Gulp, EJS, SASS, browser-syncのgulpfileサンプル</title>
      <link>https://pop-web.github.io/programming/javascript/gulp-ejs-sass-browser-sync%E3%81%AEgulpfile%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB/</link>
      <pubDate>Wed, 17 Apr 2019 00:00:00 +0000</pubDate>
      <guid>https://pop-web.github.io/programming/javascript/gulp-ejs-sass-browser-sync%E3%81%AEgulpfile%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB/</guid>
      <description>&lt;p&gt;HTML、CSSコーディング作業で使用している私のgulpfileのサンプルを置いておく。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;#34;use strict&amp;#34;

const gulp = require(&amp;#39;gulp&amp;#39;)
const sass = require(&amp;#39;gulp-sass&amp;#39;) //scssコンパイル
const autoprefixer = require(&amp;#34;gulp-autoprefixer&amp;#34;)//べンダープレフィックス
const sassGlob = require(&amp;#34;gulp-sass-glob&amp;#34;)//import文を短くまとめる
const cleanCSS = require(&amp;#39;gulp-clean-css&amp;#39;)//cssフォーマッタ
const notify = require(&amp;#39;gulp-notify&amp;#39;) //エラーを通知
const plumber = require(&amp;#39;gulp-plumber&amp;#39;) //watch中にエラー防止
const sourcemaps = require(&amp;#39;gulp-sourcemaps&amp;#39;)//ソースマップ
const  ejs = require(&amp;#34;gulp-ejs&amp;#34;) //EJS
const rename = require(&amp;#39;gulp-rename&amp;#39;)//リネーム
const replace = require(&amp;#34;gulp-replace&amp;#34;)//置換
const browserSync = require(&amp;#34;browser-sync&amp;#34;)//自動リロード
const del = require(&amp;#39;del&amp;#39;)//削除

// paths
const paths = {
  src: &amp;#39;src&amp;#39;,
  dist: &amp;#39;dist&amp;#39;
}

//scssコンパイル
gulp.task(&amp;#34;sass&amp;#34;, () =&amp;gt; {
    return gulp.src(paths.src + &amp;#34;/scss/style.scss&amp;#34;)
      .pipe(plumber({ errorHandler: notify.onError(&amp;#34;Error: &amp;lt;%= error.message %&amp;gt;&amp;#34;) }))
      .pipe(sourcemaps.init())
      .pipe(sassGlob())
      .pipe(sass())
      .pipe(autoprefixer({
        grid: true
      }))
      .pipe(cleanCSS({format: &amp;#39;beautify&amp;#39;}))
      .pipe(sourcemaps.write(paths.dist + &amp;#34;/css&amp;#34;))
      .pipe(gulp.dest(paths.dist + &amp;#34;/css&amp;#34;))
      .pipe(notify({
        title: &amp;#39;Sassをコンパイルしました。&amp;#39;,
        message: new Date(),
        sound: &amp;#39;Tink&amp;#39;,
    }))
})

//EJS
gulp.task(&amp;#34;ejs&amp;#34;, () =&amp;gt; {
    return gulp.src([paths.src + &amp;#34;/ejs/**/*.ejs&amp;#34;, &amp;#34;!&amp;#34; + paths.src + &amp;#34;/ejs/**/_*.ejs&amp;#34;])
    .pipe(ejs({}, {}, {ext:&amp;#39;.html&amp;#39;}))
    .pipe(rename({ extname: &amp;#34;.html&amp;#34; }))
    .pipe(replace(/[\s\S]*?(&amp;lt;!DOCTYPE)/, &amp;#34;$1&amp;#34;))
    .pipe(gulp.dest(paths.dist))
    .pipe(notify({
      title: &amp;#39;EJSをコンパイルしました。&amp;#39;,
      message: new Date(),
      sound: &amp;#39;Tink&amp;#39;,
  }))
})

// server
gulp.task(&amp;#39;browser-sync&amp;#39;, () =&amp;gt; {
    return browserSync.init({
        server: {
            baseDir: paths.dist
        },
        port: 4000,
        reloadOnRestart: true
    })
})

// reload
gulp.task(&amp;#34;reload&amp;#34;, done =&amp;gt; {
  browserSync.reload()
  done()
})

// clean
gulp.task(&amp;#39;clean&amp;#39;, (done) =&amp;gt; {
  del(paths.dist + &amp;#39;/**/*&amp;#39;);
  done();
});

// watch
gulp.task(&amp;#34;watch&amp;#34;, done =&amp;gt; {
  gulp.watch(paths.src + &amp;#34;/scss/**/*.scss&amp;#34;, gulp.series(&amp;#39;sass&amp;#39;, &amp;#39;ejs&amp;#39;, &amp;#39;reload&amp;#39;))
  gulp.watch(paths.src + &amp;#34;/ejs/**/*.ejs&amp;#34;, gulp.series(&amp;#39;ejs&amp;#39;, &amp;#39;reload&amp;#39;))
  done()
})

// gulp
gulp.task(&amp;#39;default&amp;#39;,
  gulp.parallel(&amp;#39;watch&amp;#39;, &amp;#39;browser-sync&amp;#39;)
)

// build
gulp.task(&amp;#39;build&amp;#39;,
    gulp.series(&amp;#39;clean&amp;#39;,
        gulp.series(&amp;#39;sass&amp;#39;,
            gulp.series(&amp;#39;ejs&amp;#39;,)))
)
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
  </channel>
</rss>
