Sapper 开源项目教程

Sapper 开源项目教程

sapperThe next small thing in web development, powered by Svelte项目地址:https://gitcode.com/gh_mirrors/sa/sapper

1. 项目的目录结构及介绍

Sapper 项目的目录结构如下:

/sapper-project
├── src
│   ├── routes
│   │   ├── index.svelte
│   │   ├── about.svelte
│   │   └── _error.svelte
│   ├── client.js
│   ├── server.js
│   ├── template.html
│   └── service-worker.js
├── static
│   ├── favicon.png
│   └── global.css
├── rollup.config.js
├── package.json
└── README.md

目录结构介绍

  • src/:包含项目的源代码。
    • routes/:存放页面组件,每个 .svelte 文件对应一个路由。
    • client.js:客户端入口文件。
    • server.js:服务器入口文件。
    • template.html:HTML 模板文件。
    • service-worker.js:服务工作者文件,用于离线支持。
  • static/:存放静态资源文件,如图片和全局样式。
  • rollup.config.js:Rollup 配置文件。
  • package.json:项目的依赖和脚本配置。
  • README.md:项目说明文档。

2. 项目的启动文件介绍

client.js

client.js 是客户端的入口文件,负责初始化客户端应用。

import * as sapper from '@sapper/app';

sapper.start({
  target: document.querySelector('#sapper')
});

server.js

server.js 是服务器端的入口文件,负责启动服务器。

import sirv from 'sirv';
import polka from 'polka';
import compression from 'compression';
import * as sapper from '@sapper/server';

const { PORT, NODE_ENV } = process.env;
const dev = NODE_ENV === 'development';

polka()
  .use(
    compression({ threshold: 0 }),
    sirv('static', { dev }),
    sapper.middleware()
  )
  .listen(PORT, err => {
    if (err) console.log('error', err);
  });

3. 项目的配置文件介绍

rollup.config.js

rollup.config.js 是 Rollup 的配置文件,用于打包项目。

import svelte from 'rollup-plugin-svelte';
import commonjs from '@rollup/plugin-commonjs';
import resolve from '@rollup/plugin-node-resolve';
import livereload from 'rollup-plugin-livereload';
import { terser } from 'rollup-plugin-terser';
import css from 'rollup-plugin-css-only';

const production = !process.env.ROLLUP_WATCH;

function serve() {
  let server;

  function toExit() {
    if (server) server.kill(0);
  }

  return {
    writeBundle() {
      if (server) return;
      server = require('child_process').spawn('npm', ['run', 'start', '--', '--dev'], {
        stdio: ['ignore', 'inherit', 'inherit'],
        shell: true
      });

      process.on('SIGTERM', toExit);
      process.on('exit', toExit);
    }
  };
}

export default {
  input: 'src/main.js',
  output: {
    sourcemap: true,
    format: 'iife',
    name: 'app',
    file: 'public/build/bundle.js'
  },
  plugins: [
    svelte({
      compilerOptions: {
        dev: !production
      }
    }),
    css({ output: 'bundle.css' }),
    resolve({
      browser: true,
      dedupe: ['svelte']
    }),
    commonjs(),
    !production && serve(),
    !production && livereload('public'),
    production && terser()
  ],
  watch: {
    clearScreen: false
  }
};

package.json

package.json

sapperThe next small thing in web development, powered by Svelte项目地址:https://gitcode.com/gh_mirrors/sa/sapper

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谢璋声Shirley

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值