今天学习内容总结

1.AJAX

使用jquery中的ajax来发送get,post,和ajax请求。
get请求

$.get('/getInfo',{name:'张三'} ,function (res) {
                console.log(res);
            })
复制代码

post请求

      $.post('/postIofo', function (res) {
                console.log(res);
            })
复制代码

post请求和get请求基本一致,参数也是和get写发一样

ajax请求

 $.ajax({
                url: '/ajax',
                method: 'psot',
                success(res) {
                    console.log(res);
                },
                data: {
                    name: '张三'
                },
                fail(err) {
                    console.log(err);
                }
            })
复制代码

url接口地址,method方法,默认不写为get请求,data传递的参数,success成功的回调
fail失败的回调。

2.邮件激活

首先写注册页面,账号密码注册,账号注册使用给正则表达式进行邮箱格式的规范,判断之后,使用AJAX向后端发送一个post请求,请求参数包含账号和密码。后端首先判断保存用户信息的文件夹是否存在,如果不存在,创建一个文件夹,若是存在,将文件夹里的内容读出来,写到保存用户的数组中。后端post接口首先遍历保存用户的数组,判断账号是否注册,如果已经注册,返回给前端账号已经注册的信息,若果没有注册,将未注册的账号信息推到保存账户信息的数组之中,然后再将数组写到文件夹之中。

发送邮件首先引入nodemailer模块,之后进行邮件的配置,主要有主机,端口号和授权信息 ,然后进行发送邮件的配置有:from从哪里发, to发送到哪里,subject邮件主题,html文件内容。

最后进行邮件的激活,我们要找到当前需要被激活的账户,以及所有已经注册的账户当中的索引值。然后点击链接激活成功,跳转到登录页面,进行登录,在登录时候首先判断账号是否正确,若不正确返回账号未注册信息,若是账号正确,进行密码判断,正确在进行账号激活判断,若不正确,返回错误信息。

前端代码:

 <h1>注册页面</h1>
    <label for=""></label><input type="text" id="account"><br>
    <label for=""></label><input type="psd" id="psd"><br>
    <button onclick="registInfo()">注册</button>
    <script src="https://juejin.cn/post/jquery.js"></script>

    <script>

        function registInfo() {
            let account = document.getElementById('account').value
            let psd = document.getElementById('psd').value
            $.post('/regist',{account,psd} ,res => {
                console.log(res);
            })
        }
    </script>

复制代码

后端代码块
配置邮箱

let config = {
    host: 'smtp.qq.com',
    port: 25,
    auth: {
        user: '你的邮箱账号@qq.com',
        pass: '你的邮箱授权码'
    }
}
let psotMail = nodemailer.createTransport(config)
复制代码
fs.access('user.txt', function (noExists) {
    if (noExists) {
        fs.writeFileSync('user.txt', '[]')
    } else {
        fs.readFile('user.txt', 'utf-8', (err, data) => {
            allUser = JSON.parse(data)
        })
    }
})
复制代码

post请求

    let account = req.body.account
    for (let i = 0; i < allUser.length; i++) {
        let user = allUser[i]
        if (user.account == account) {
            res.send('账号已注册')
            return
        }
    }
    allUser.push(req.body)
    fs.writeFileSync('user.txt', JSON.stringify(allUser))
    //配置发送邮件
    psotMail.sendMail({
        from: '你的邮箱账号@qq.com',
        to: req.body.account,
        subject: '账户激活通知',
        html:`尊敬的XXX用户,请点击<a href='http://localhost:8080/active?account=${account}'>以下链接,进行账户激活</a>`
        // html: `点击下面链接<a href='http://localhost:8080/active'>来激活账号</a>`
    })
    res.send('注册成功')
})
复制代码

激活邮箱操作

app.get('/active', (req, res) => {
    let index = allUser.findIndex(function (el) {
        return el.account == req.query.account
    })
    let user = allUser[index]
    user.isActive = true
    res.send(`
  <script>
  location.href='https://juejin.cn/post/login.html'
  </script>
 `)
})
复制代码

3.模板引擎

使用artremplate模板引擎
使用模板引擎先创建一个模板 类型为text/html,id可以自己命名

<script type="text/html" id="films">
    </script>
复制代码

再将模板和后端返回的数据绑定在一起,这样就可以在模板中使用后端返回的数据,这里使用ajax来接收后端发送回来的数据。

$.ajax({
            url: '/getInfo',
            success(res) {
                console.log(res);
                //参数1 模板id
                //参数2 数据
                let html = template('recommand', res)
                $('main').html(html)
            }
        })
复制代码

这是就可以在模板引擎中渲染后端传来的数据

   <script type="text/html" id="films">
            <h1>{{title}}</h1>
              <!-- each 每一个 as 作为 -->
               {{each  filmList as item}}
                <h2>{{item.name}}--->>{{item.score}}</h2>
               {{/each}}
    </script>
复制代码

我们要渲染的数据要写在{{ }}中,循环{{each}} {{/each}}要有结束标签。

如果后端返回来的数据类型不一样,我们可以这样做

    <script type="text/html" id="recommand">
          <h1>{{title}}</h1>
          {{each list as item}}
          <div>{{item.name}}</div>
           {{if item.type=='book'}}
             <div>
              <img src="{{item.pic}}" alt=""><br>
            <div> 价格:{{item.price |changePrice}}</div>
             </div>
           {{else}}
           <div>
               <a href="{{item.url}}" target="_blank">{{item.url}}</a><br>
         <div> 访问量:{{item.visit |changeVisit}}</div>
           </div>
           {{/if}}
          {{/each}}

    </script>
复制代码

遍历后端返回来的数据,进行if语句的判断,这里的if同样也有结束标签。
这里附上后端的数据

    var films = {
        title: "热映电影",
        filmList: [
            {
                name: "扫黑决战",
                score: 6.3,
            }, {
                name: "你好世界",
                score: 9.0
            }, {
                name: "速9",
                score: "3"
            }, {
                name: "超越",
                score: 5
            }
        ]
    }
    var recommandList = {
        title:"推荐列表" , 
        list:[
            {
                type:"book" , 
                name:"《月亮与六便士》" , 
                pic:"https://img2.baidu.com/it/u=2770096609,2226154745&fm=26&fmt=auto&gp=0.jpg",
                price:9.999
            },{
                type:"website" , 
                name:"《花瓣网》" ,
                url:"http://www.huaban.com" , 
                visit:1000
            },{
                type:"book",
                name:"《小王子》",
                pic:"https://img1.baidu.com/it/u=3701993196,2858621135&fm=26&fmt=auto&gp=0.jpg" ,
                price:19.99
            },{
                type:"website" , 
                name:"github" , 
                url:"http://github.com" , 
                visit:99999
            }
        ]
    }
    res.send(recommandList)
})
复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享