最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 小白篇 -- 原生 js 实现单页应用的初探

    正文概述 掘金(lEnG开心哇)   2020-12-28   404

    一、前言

    我们一直使用各种框架来实现单页应用,常用的有 ReactVueAngularJS

    那么我们来实现一个简单的 spa 应用,主要看下思路。

    二、准备

    新建一个名为 spa 的文件夹;

    mkdir spa
    
    cd spa
    

    初始化

    npm init -y
    

    安装 express 来启动项目;

    npm i express
    

    三、新建

    1. 项目目录结构

    spa
    ├── package.json
    ├── public
    │   ├── LoginIn.js
    │   ├── LoginUp.js
    │   ├── Nav.js
    │   ├── index.html
    │   └── index.js
    └── server.js
    

    2. 在根目录新建 server.js

    const express = require('express');
    const app = express();
    
    app.use(express.static(__dirname + '/public'));
    
    app.listen(3000, function() {
      console.log('服务器已启动...');
    });
    

    3. 在 /public/index.html 引入 jQuery入口文件

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>单页应用Demo</title>
      </head>
      <body>
        <div id="root"></div>
    
        <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
        <script src="./index.js" type="module"></script>
      </body>
    </html>
    
    

    4. /public/index.js

    import Nav from "./Nav.js";
    new Nav;
    

    5. /public/Nav.js

    import LoginIn from "./loginIn.js";
    import LoginUp from "./LoginUp.js";
    
    //页面的导航栏
    export default class Nav {
      constructor() {
        this.render()
        this.handle()
      }
      //渲染函数
      render() {
        let template = `
                <div>
                    功能选择
                    <a href="#" id="loginInBtn">登录</a>
                    <a href="#" id="loginUpBtn">注册</a>
                </div>
                <div id="container"></div>
            `
        $('#root').html(template)
      }
      handle() {
        $('#loginInBtn').click(function () {
          new LoginIn()
        })
        $('#loginUpBtn').click(function () {
          new LoginUp()
        })
      }
    }
    
    

    6. /public/LoginIn.js

    import LoginUp from './LoginUp.js'
    
    export default class LoginIn {
      constructor() {
        this.render()
        this.handle()
      }
      //渲染函数
      render() {
        let template = `
          <div>
          <p>
              <span> 账号:</span>
              <input type="text">
          </p>
          <p>
              <span> 密码:</span>
              <input type="password">
          </p>
          <p>
              <input  id="LoginIn" type="button" value="登录">
              <input id='backLoginUp' type="button" value="回到注册">
          </p>
      </div>
          `
        $('#container').html(template)
      }
    
      handle() {
        $('#backLoginUp').click(() => {
          new LoginUp()
        })
      }
    }
    
    

    7. /public/LoginUp.js

    import LoginIn from './LoginIn.js'
    
    export default class LoginUp {
      constructor() {
        this.render();
        this.handle();
      }
      //渲染函数
      render(){
          let template=`
          <div>
          <p>
              <span> 账号:</span>
              <input type="text">
          </p>
          <p>
              <span> 密码:</span>
              <input type="password">
          </p>
          <p>
          <span> 电话号码:</span>
          <input type="text">
           </p>
          <p>
              <input id="LoginIn" type="button" value="注册">
              <input id='backLoginUp' type="button" value="回到登录">
          </p>
      </div>
          `;
          $("#container").html(template);
      }
    
      handle() { 
        $('#backLoginUp').click(() => { 
          new LoginIn();
        })
      }
    };
    

    小白篇 -- 原生 js 实现单页应用的初探

    小白篇 -- 原生 js 实现单页应用的初探

    小白篇 -- 原生 js 实现单页应用的初探

    小白篇 -- 原生 js 实现单页应用的初探

    四、后言

    本 demo 简单示例下单页应用的实现,望多多指教,还有什么原生 js 实现路由啥的可以网上搜索看看???。


    起源地下载网 » 小白篇 -- 原生 js 实现单页应用的初探

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元