改造百度提示案例| 学习笔记

简介: 快速学习改造百度提示案例。

开发者学堂课程【Ajax 前端开发入门与实战改造百度提示案例】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/595/detail/8552


改造百度提示案例

 

目录:

一、模板引擎的本质

二、常见的模板引擎

 

无论是 Ajax 还是跨域,目的都是为了获取服务器的数据,获取数据之后将前端界面进行渲染。

如何渲染前端界面?

前端界面都是由标签构成的,所以前端界面的渲染主要做的就是生成 html 标签。

生成 html 标签通过拼接字符串的方式来实现。这种方式在标签结构比较复杂的情况之下很不好操作和后期的维护,并且容易出错。

所以有一种技术叫做模板引擎,通过模板引擎可以很方便的生成 html 标签。

 

一、模板引擎的本质

模板引擎的本质:将数据和模板结合起来生成 html 片段。所以模板引擎需要两个组成部分:模板和数据,通过数据,将模板指定的标签动态生成,方便维护。

获取相关提示案例之后,所需要做的就是生成一系列的 li 标签,将服务器当中的所获取的结果展示给用户看,所以就是要生成一系列的 li 标签。

最开始是使用的字符串拼接的方式生成一个又一个的 li 标签,然后将标签放在 ul 里面。(通过字符串拼接的方式也能够生成一系列的标签)

但是有一个缺点就是一旦复杂起来就会相对麻烦,在后期维护工作也会非常麻烦。所以就可以使用模板引擎。

<DCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Document</title>

<script type="text javascript" src=" myutils. js"></script>

<script type="text javascript" src="jquery. js"></script>

<script type=" text/ javascript" >

window . onload = function(){

var btn = document . querySelector(" #btn" );

btn.onclick = function(){

varkeywordValue=document.querySelector("#keyword" ) .value;

console . log(keywordValue);

$.ajax({

url:"https://spØ.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su" ,

data : (wd:keywordValue],

success:function( data){

console. log(data);

},

var liTag = "";

for(var i-0;i<data.s. length;i+)f

var temp= data.s[i];

//liTag += "<li>"+temp+"</li>";

liTag+= "<li>div><span>#Æ"+i+" :</span><span>"+temp+"</span>/div></li>" I

var ulTag = document . querySelector("ul");

ulTag. innerHTML = liTag;

),

dataType:"jsonp" ,

jsonp: "cb"

]);

(就是用一些字符串拼接的方式)

测试:

输入 java

结果0: java 培训

结果1: java 教程

结果2: javascript

结果3: java 环境变量设置

结果4: java api 1.7 中文

结果5: javaee

结果6: java8

结果7: java map

结果8: jav a 编程思想

结果9: javascript 教程

就有相应数据的输出。

前端结构进行变化

<ul>

<li>1</li>

<li>2</li>

<li>3</li>

<li>4</li>

<li>5</li>

</ul>

将结构进行变化一下:所以将不会是 li 标签

<li>

<div>

<span>结果1:</span>(这个span用来描述信息)

<span>1:</span>(这个span展示的是服务器相关的数据)

</div>

</li>

<li>

<div>

<span>结果1:</span>(这个span用来描述信息)

<span>1:</span>(这个span展示的是服务器相关的数据)

</div>

</li>

<li>

<div>

<span>结果1:</span>(这个span用来描述信息)

<span>1:</span>(这个span展示的是服务器相关的数据)

</div>

</li>

<li>

<div>

<span>结果1:</span>(这个span用来描述信息)

<span>1:</span>(这个span展示的是服务器相关的数据)

</div>

</li>

<li>

<div>

<span>结果1:</span>(这个span用来描述信息)

<span>1:</span>(这个span展示的是服务器相关的数据)

</div>

</li>

具体展示为:

结果1:1

结果1:1

结果1:1

结果1:1

结果1:1

获取到服务器数据后,就要生成一系列这种结构的li标签。

 

二、常见的模板引擎

常见的模板引擎有很多,例如一个效率最高的模板引擎 artTenplate ,这是腾讯公司出品的开源的模板引擎,在 github 上可以下载到源代码。以下是 artTenplate 的具体使用。 

使用步骤如下:

1、引入 js 文件

<script type=" text/ javascript" src=" template. Js”></script>

2、定义模板

<!-- 1. 模板的 type-text/html 2.给模板配一个 id  data.s-->

<script type=" text/html" id=" resultTemplate">

{{each s as value i}}

<li>

<div>

<span>结果{{i}}:</span>

< span>{{value}}</span>

</div>

</li>

{{/each]]

</script>

//template方法的含义就是将数据和模板结合起来,生成html片段

var html = template("resultTemplate" ,data);

console . log(html);

//var liTag = "";

//for(var i=0; i<data.s. length;i++){

//var temp = data.s[i] ];

//liTag += "<li>"+temp+"</li>" ;

//liTag+="<li><div><span>

结果+i+" :</span><span>"+temp+"</span></div></li>"

// var ulTag = document . querySe lector( "ul" ) ;

// ulTag. innerHTML = liTag

//var ulTag= document . querySelector("ul");

//ulTag IinnerHTML = liTag;

3、将数据和模板结合起来生成 html 片段

4、将 html 片段渲染到界面中

基本语法:

得到数据中的值 {{value}}

循环操作{{each result as value i }} {/eachl}

转义: # 的使用

这种方式比较方便,拥有层次结构,也方便后期的维护。

相关文章
|
网络协议 关系型数据库 MySQL
连接远程mysql数据库失败常见原因及解决办法
1. 没有开启 MySQL 的远程登陆帐号。 1.找到mysql数据库的user表。在user表中新建一条数据,设置User(username)和Host(开放访问MySQL的IP:例如123.118.17.201)以及登录密码。这样就设置了允许访问的用户名和IP地址(若想所有IP都可以访问,则可将Host设置为‘%’,但是这样很危险,不建议)。
9377 0
连接远程mysql数据库失败常见原因及解决办法
|
存储 大数据 数据库
电商数据分析-02-电商业务介绍及表结构
电商数据分析-02-电商业务介绍及表结构
|
存储 弹性计算 安全
阿里云无影云电脑有什么用?
阿里云无影云电脑有什么用?阿里云无影云电脑可用于高数据安全管控、高性能计算等要求的金融、设计、视频、教育等领域,适用于多种办公场景,如远程办公、多分支机构、安全OA、短期使用、专业制图等
516 0
|
开发者 Python
pgzrun
pgzrun
934 1
|
小程序 JavaScript Java
音乐小程序|基于微信开发音乐小程序的系统设计与实现(源码+数据库+文档)
音乐小程序|基于微信开发音乐小程序的系统设计与实现(源码+数据库+文档)
333 0
|
机器学习/深度学习 人工智能 算法
|
SQL Dubbo 安全
关于“错误码”设计方面的思考|系统异常,我****
这篇文章给大家分享一下关于“错误码”设计方面的思考。其实提到“错误码”我的第一反映是:混乱。 特别是在微服务架构之下,各个团队都有一套自己的“错误码”,甚至在一个团队里面不同的微服务都有自己的一套码值,这些“一套一套”的错误码,各成一派,互不通气。 但是一旦微服务上下游交互涉及到错误码转换的时候,总有一方就开始痛了,因为总有一方要承担兼容转换、令人“恶心”的逻辑。 我也见过试图在一片混乱中“力挽狂澜”的案例,比如由基础架构组提供统一的错误码管理平台,如果某个系统需要错误码就去该管理平台上去申请。 这个想法固然是好的,但是我认为存在的一个巨大的问题就是:历史码值的治理。
|
前端开发 开发者
「前端工作小记」关于业务组件的思考
用技术实现梦想,用梦想打开前端技术之门。分享我在日常开发中关于业务组件的思考。
676 1
「前端工作小记」关于业务组件的思考
|
JavaScript
教你两分钟在Vue中使用富文本编辑器quill-editor
富文本编辑器,Rich Text Editor, 简称 RTE, 是一种可内嵌于浏览器,所见即所得的文本编辑器。
1873 0
|
数据可视化 JavaScript 前端开发
Android自动生成代码,可视化脚手架之环境搭建
目前可视化工具采用的是Electron进行开发的,Electron 是一个使用 JavaScript、HTML 和 CSS 构建跨平台的桌面应用程序,它基于 Node.js 和 Chromium,被 Atom 编辑器和许多其他应用程序使用,也就是说使用Electron,您必须有一定的web开发经验,如果没有也没关系,后续您可以直接在我的模板中进行对应的修改即可,当然了,为了能够自己灵活的可视化,建议还是掌握一些Web的经验,编程语言之间的语法,基本互通,学起来也比较容易。
414 0