<!DOCTYPE HTML>
<html>
<head>
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>Page</title>
  <script src='https://openui5.hana.ondemand.com/resources/sap-ui-core.js' data-sap-ui-theme='sap_bluecrystal' data-sap-ui-libs='sap.m' data-sap-ui-compatVersion="edge" data-sap-ui-preload="async" data-sap-ui-bindingSyntax='complex' data-sap-ui-resourceroots='{"sap.m.sample": "./"}'
  data-sap-ui-frameOptions="trusted">
  </script>
  <script>
    sap.ui.getCore().attachInit(function() {
      new sap.m.Shell({
        showLogout: false,
        appWidthLimited: false,
        app: new sap.ui.core.ComponentContainer({
          name: "sap.m.sample",
          width: "100%",
          settings: {
            id: "sample"
          },
          propagateModel: true
        })
      }).placeAt("content");
    });
  </script>

</head>

<body id="content" style="margin: 0" class="sapUiBody">
</body>

</html>
This is an example sapui5 application in JSView using MVC architecture.
Created in response to https://stackoverflow.com/questions/48379923/manually-convert-from-xml-view-to-javascript-view-in-sapui5/52293597#52293597
	{"ProductCollection": [{
		"titleId": 0,
		"Name": "Olayinka Otuniyi",
		"ProductId": "001",
		"ProductPicUrl": "sap-icon://competitor"
	}, {
		"titleId": 1,
		"Name": "Maria Anders",
		"ProductId": "002",
		"ProductPicUrl": "sap-icon://badge"
	}, {
		"titleId": 2,
		"Name": "Ana Trujillo",
		"ProductId": "003",
		"ProductPicUrl": "sap-icon://broken-link"
	}, {
		"titleId": 3,
		"Name": "Thomas Hardy",
		"ProductId": "004",
		"ProductPicUrl": "sap-icon://create"
	}, {
		"titleId": 4,
		"Name": "Christina Berglund",
		"ProductId": "005",
		"ProductPicUrl": "sap-icon://pending"
	}, {
		"titleId": 5,
		"Name": "Hanna Moos",
		"ProductId": "006",
		"ProductPicUrl": "sap-icon://decision"
	},{
		"titleId": 6,
		"Name": "Martín Sommer",
		"ProductId": "007",
		"ProductPicUrl": "sap-icon://process"
	}, {
		"titleId": 7,
		"Name": "Laurence Lebihans",
		"ProductId": "008",
		"ProductPicUrl": "sap-icon://accept"
	}, {
		"titleId": 8,
		"Name": "Elizabeth Lincoln",
		"ProductId": "009",
		"ProductPicUrl": "sap-icon://alert"
	}]}
sap.ui.define(["sap/ui/core/UIComponent"],
	function(UIComponent) {
		"use strict";
		return UIComponent.extend("sap.m.sample.Component", {

			metadata: {
				manifest: "json"
			},
		});
	}, true);
{
	"_version": "1.1.0",
	"sap.app": {
		"_version": "1.1.0",
		"id": "sample",
		"type": "application",
		"i18n": "i18n.properties",
		"title": "{{appTitle}}",
		"description": "{{appDescription}}",
		"applicationVersion": {
			"version": "1.0.0"
		},
		"dataSources": {
			"products": {
				"uri": "data.json",
				"type": "JSON",
				"settings": {
					"odataVersion": "2.0",
					"localUri": "sap.m.sample.data.json",
					"annotations": []
				}
			}
		}
	},
	"sap.ui": {
		"_version": "1.1.0",
		"technology": "UI5",
		"deviceTypes": {
			"desktop": true,
			"tablet": true,
			"phone": true
		},
		"supportedThemes": ["sap_bluecrystal"],
		"fullWidth": false
	},
	"sap.ui5": {
		"_version": "1.1.0",
		"rootView": {
			"viewName": "sap.m.sample.Main",
			"type": "JS"
		},
		"dependencies": {
			"minUI5Version": "1.30",
			"libs": {
				"sap.m": {}
			}
		},
		"models": { 
			"i18n": {
				"type": "sap.ui.model.resource.ResourceModel",
				"settings": {
					"bundleName": "sap.m.sample.i18n"
				}
			},
			"products": {
				"type": "sap.ui.model.json.JSONModel",
				"dataSource": "products"
			}
		},
		"resources": {
			"css": [{
				"uri": "style.css"
			}]
		},
		"routing": {
			"config": {
				"routerClass": "sap.m.routing.Router",
				"viewPath": "sap.m.sample",
				"controlId": "app",
				"viewType": "JS",
				"async": true,
				"bypassed": {
					"target": ["Main", "notFound"]
				}
			},
			"routes": [{
				"name": "Main",
				"pattern": "",
				"target": ["Main"]
			}],
			"targets": {
				"Main": {
					"viewName": "Main",
					"controlAggregation": "pages",
					"viewLevel": "1"
				}
			}
		},
		"contentDensities": {
			"compact": true,
			"cozy": true
		}
	}
}
sap.ui.define(["sap/m/StandardListItem", "sap/ui/model/json/JSONModel"], function(StandardListItem, JSONModel) {
	"use strict";

	return sap.ui.controller("sap.m.sample.Main", {
		//		onInit: function() {
		//		},		
		onAfterRendering: function() {
			var oTemplate = new StandardListItem({
				title: "{products>Name}",
				description: "{products>ProductId}",
				icon: "{products>ProductPicUrl}",
				iconDensityAware: false,
				iconInset: false,
				type: "Active"
			});
			oTemplate.attachPress(this.onSelectionChange, this);
			this.getView().byId("idList").bindItems({
				path: "/ProductCollection",
				template: oTemplate,
				model: "products"
			});
		},
		onSearch: function() {
			console.log("Searching");
		},
		onSelectionChange: function() {
			console.log("changing Selection");
		}

	});

});
sap.ui.define(["sap/m/Page", "sap/m/List", "sap/m/Toolbar", "sap/m/SearchField", "sap/m/Label", "sap/m/Text"], function(Page, List,
	Toolbar,
	SearchField, Label, Text) {
	"use strict";
	return sap.ui.jsview("sap.m.sample.Main", {
		getControllerName: function() {
			return "sap.m.sample.Main";
		},
		createContent: function(oController) {
			var oToolbar = new Toolbar({
				visible: true,
				content: [
					new SearchField({
						liveChange: function() {
							oController.onSearch();
						},
						width: "100%"
					})
				]
			});
			var oInfoToolbar = new Toolbar({
				content: new Toolbar(this.createId("idInfoToolbar"), {
					visible: true,
					content: new Text({
						text: "Label Text"
					})
				})
			});

			var oList = new List(this.createId("idList"), {
				mode: "MultiSelect",
				includeItemInSelection: true,
				infoToolbar: oInfoToolbar
			});

			var oPage = new Page(this.createId("oPageId"), {
				title: "{i18n>appTitle}",
				showHeader: true,
				showSubHeader: true,
				headerContent: oToolbar,
				content: [oList]
			});
			var app = new sap.m.App();
			app.addPage(oPage);
			app.placeAt("content");
			return app;
		}

	});

});