Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 5 years have passed since last update.

ect共有用

Last updated at Posted at 2020-04-19

スタイルについて

CSSファイルは `src/styles/*` に存在しています。 SCSSというCSSを拡張した言語を使用しており、新たしくscssファイルを追加したときは、 `src/styles/entry.scss` に追記を行ってください。

_layout.scss に全ページ共通のレイアウトを定義するSCSSファイル、
layouts/* に個別ページで共通のレイアウトを定義するSCSSファイルを配置しています。

Javascriptについて

jsファイルは `src/scripts/*` に存在しています。 ブラウザ間の誤差をなくすため、Webpackを通してコンパイル後使用しています。 新たしくjsファイルを追加したときは、 `src/scripts/entry.js` に追記を行ってください。

ブラウザのコンソールを開くと、"sample.js","sample2.js" と記載があり、
それぞれ、src/scripts/sample1.js, src/scripts/sample2.js が読み込まれているのが分かります。
sample1がjQueryを用いたサンプル、sample2が素のjsのサンプルになります。

詳細な設定は /webpack.config.js に記述しています。

新規ページの追加について

`views/app/*` にectファイルを追加を行った後、 `config/routing.json` と `config/resources.json` に記載を行います。 `routing.json` にはブラウザからアクセスするURLの記載を行い、`resources.json` には読み込みを行うectファイルの設定を行います ※ 詳細はサンプルを確認ください。

レイアウトについて

1行目に `<% extend 'layouts/layout_public.ect' %>` のように指定することでレイアウトファイルを指定できます。 静的コンテンツページのレイアウトを変更した場合、`views/layouts/layout_public.ect` を変更することで、静的コンテンツのレイアウトを変更することができます。

リンクについて

ページのリンクを貼るときは、URLを `<%= @funcs.url 'Thoroughbreds.Index' %>` に置き換えてください。

各URLのパラメタは config/routing.json に定義がされています。
例えば、Aboutページにリンクを貼るときは <a href="<%= @funcs.url 'App.About' %>">UMASTERとは?<a> と記載します。

URL中に引数を渡す必要がある場合、 <%= @funcs.url 'Thoroughbreds.Detail',{id:'1234'} %> のように指定します。

フォームで使用する際も、同様にactionパラメタを @funcs.url を使用して指定してください。
例:<form method="post" action="<%= @funcs.url 'Thoroughbreds.Index' %>">

@funcs.url を使用してURLを指定することで、仕様変更に起因するURLを変更した場合に、 routing.json を変更するだけでリンク切れを起こさなくなります。

画像について

画像の読み込みは、src/images/* に画像を配置を行い、 `` のように記載することで画像を表示できます。

@funcs.resourcesmap を用いて読み込むことで、画像のハッシュ値で更新の有無を判定し、アプリケーションの更新後に同一の画像が表示され続けるのを防ぎます。
また、ハッシュによってキャッシュのコントロールも行われるため、

@funcs.resourcesmap は画像以外にも、srcディレクトリ以下に配置されたものについては使用できます。
例えば、views/layouts/layout_public.ect では、CSSやJavascriptが @funcs.resourcesmap を使用して読み込まれているのが分かります。
実際にブラウザでソースコードを確認すると、読み込み部分にハッシュ値が割り振られており、CSSを更新するとハッシュ値も同様に変化することがわかります。

カスタムスクリプト

launchpack.js でサーバーサイドでレンダリングするためのカスタムスクリプトを定義できます。

例えば、下記のように定義すると共通ステータスのENUMから表示用の文言へ変換が行なえます。

launchpack.js
exports.exampleStatusText = (status) => {
  switch (status) {
    case "failed":
      return "失敗";
    case "success":
      return "成功";
  }
};
*.ect
<%= @appFuncs.exampleStatusText "success" %> # 成功と表示される

また、サーバーサイドで実行が行われるため、 package.json で定義したライブラリの利用もできます。
下記の例では、APIで取得した時間を任意の形式へ変換を行っています。

launchpack.js
const moment = require("moment-timezone");
moment.tz.setDefault("Asia/Tokyo");

// フォーマットの記載方法
// https://momentjs.com/docs/#/displaying/format/
exports.timeFormat = (timeStr, format) => {
  if (timeStr == null) {
    return "";
  }
  let time = moment(timeStr);
  return time.format(format);
};
*.ect
<%= @appFuncs.timeFormat map_search.last_update,"YYYY-MM-DD HH:mm" %> # 日付が指定した形で表示される
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?