Mohuety 再上线

アタシ、再生産

Sep 22, 2018

见习魔法师

Roselia-Blog2.0更新后的一个多月后,Mohuety仍然没有更新,因为2.0是一个单页应用(Single Page Application),在应对GitHub Pages这种类似静态的服务时,就显得比较无力,我当然可以把所有页面都复制成相同的文件,但是这样并不优雅,我就放弃了这样的想法。

就像PHP的伪静态一样,思路是利用自定义的404页面来进行路由,这是一个好方法,我当然可以把主页的代码复制成404页面,强行利用404页面和自带的导航来完成,但是这样会导致所有的页面(当然除了主页)返回的相应都是404,在查看network的时候也会是一个红色的响应,十分难看,于是分流就显得十分有必要。

Mohuety这个站的架构大致上是全静态页面,托管在GitHub Pages上,现在/blog文件夹里面是一个单页应用,那么思路就很简单了,对于/blog后的请求都分流到/blog/上。 那么,要怎么样才能还原定位前的状态呢? 答案很简单,只要改写主页和404页面,形成配合。

index.html:

let redirect = sessionStorage.redirect;
delete sessionStorage.redirect;
if (redirect && redirect != location.href) {
        history.replaceState(null, null, redirect);
}

跳转信息被存在了sessionStorage里面,因此只用在404页面中把信息写入到sessionStorage里面,并且跳转就可以了

404.html:

if(location.pathname.startsWith('/blog')) {
    sessionStorage.redirect = location.href;
    window.location.replace('/blog/')
} else {
    //Do what 404 should do
}

解决了这个问题之后,网站就上线了。

Roselia{{ def('c', function (text) { let e = btn(text) then(_ => getElement(e.returnValue).style.background = text) return e }) }}

Roselia{{ previewColor{ #bbbbbb } }}

Roselia-Blog的配色源自Roselia以及Love Live的应援色:

  • Roselia{{ c{#6670ed} }} Primary:主色取自Roselia的logo
  • Roselia{{ c{#890f87} }} Secondary:主唱湊友希那
  • Roselia{{ c{#dd0087} }} Accent: 鼓手宇田川あこ
  • Roselia{{ c{#FF4A4A} }} Error: 黒澤ダイヤ
  • Roselia{{ c{#dd2200} }} Warining: 贝斯手今井リサ
  • Roselia{{ c{#00aabc} }} Info: 吉他手氷川紗夜
  • Roselia{{ c{#229977} }} Success: 松浦果南

什么?你问我燐子Roselia{{ c{ #bbbbbb } }}在哪里?无可奉告!不知道灰色(#bbbbbb)用在哪里才比较合适,所以藏在意想不到的角落

而Mohuety的配色则源自少女☆歌劇

  • Roselia{{ c{#0288d1} }} Primary: 主色是我钦定的
  • Roselia{{ c{#6292E9} }} Secondary:神楽ひかり 神乐光 东乡美森说
  • Roselia{{ c{#E08696} }} Accent: 花柳香子
  • Roselia{{ c{#FB5458} }} Error: 愛城華恋
  • Roselia{{ c{#FE9952} }} Warining: 西條クロディーヌOui
  • Roselia{{ c{#95CAEE} }} Info: 星見純那
  • Roselia{{ c{#61BF99} }} Success: 闹钟女士 露崎まひる

作为武士道的企划之一,果不其然官网是用WordPress搭的WordPress狂魔不许摸果然没让我失望

本站调色盘演示(由roselia-script生成):

Roselia{{ ['primary', 'secondary', 'accent', 'error', 'warning', 'info', 'success'].map(v => btn(v, null, v).template).join('') }}